JAVA实现Lits元素反转
- 这种的翻转
import com.google.common.collect.Lists;
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
import java.util.*;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List intList = Arrays.asList(0, 0, 0, 1, 1, 2, 3, 3);
List resultList = Lists.newArrayListWithCapacity(intList.size());
List uniqueList = new ArrayList<>();
Bag intListBag = new HashBag(intList);
int iniNum = 0;
for (int i = intList.size() - 1; i >= 0; i--) {
//去重的 List,元素在该 List 里的个数
Bag bag = new HashBag(uniqueList);
//如果该元素在 uniqueList 的个数小于1 说明该元素没有添加过
if (bag.getCount(intList.get(i)) < 1) {
//算一下反转元素在 初始化元素的个数
int count = intListBag.getCount(intList.get(iniNum));
for (int m = 0; m < count; m++) {
resultList.add(intList.get(i));
}
// 用于区分该 元素已被添加过
uniqueList.add(intList.get(i));
//跳过这么多个数
iniNum= iniNum + count;
}
}
System.out.println("========uniqueList=========");
System.out.println(uniqueList);
//打印 uniqueList结果 [3, 2, 1, 0]
System.out.println("========resultList=========");
System.out.println(resultList);
//打印 resultList 结果 [3, 3, 3, 2, 2, 1, 0, 0]
}
}
- 这是另一种
import java.util.List;
import com.alibaba.fastjson.JSONArray;
public class Test {
public static void main(String[] args) {
String arryStr="[{"x":3,"y":2},{"x":2,"y":2},{"x":2,"y":3},{"x":1,"y":3},{"x":2,"y":6},{"x":1,"y":2}]";
List intList = JSONArray.parseArray(arryStr, Coordinates.class);
//初始化数据 [Coordinates(x=3, y=2), Coordinates(x=2, y=2), Coordinates(x=2, y=3), Coordinates(x=1, y=3), Coordinates(x=2, y=6), Coordinates(x=1, y=2)]
//List resultList = Lists.newArrayListWithCapacity(intList.size());
System.out.println("========intList=========");
System.out.println(intList);
int j=0;
System.out.println("========intList.size()/2========="+intList.size()/2);
for(int i = intList.size()-1;i>= (intList.size()/2);i--){
Coordinates t = new Coordinates();
t.setX(intList.get(i).getX());
t.setY(intList.get(i).getY());
intList.get(i).setX(intList.get(j).getX());
intList.get(j).setX(t.getX());
j++;
}
System.out.println("========resultList=========");
System.out.println(intList);
//打印结果 [Coordinates(x=1, y=2), Coordinates(x=2, y=2), Coordinates(x=1, y=3), Coordinates(x=2, y=3), Coordinates(x=2, y=6), Coordinates(x=3, y=2)]
}
}
//坐标类
import lombok.Data;
@Data
public class Coordinates {
private Integer x;
private Integer y;
}