List<T> 去重、排序、逆序
使用 java8 自带的方法即可:(推荐使用该方法)
1.根据对象中某个字段去重
List<User> lists = 从某处得来的集合;
lists = lists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
new
TreeSet<>(Comparator.comparing(User::getXxx))), ArrayList::
new
));
lists = lists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
new
TreeSet<>(Comparator.comparing(o -> o.get("id")))), ArrayList::
new
));
2.根据对象中某个字段排序
List<User> lists = 从某处得来的集合;
lists = lists .stream().sorted(Comparator.comparing(User::getXxx)).collect(Collectors.toList()); //升序
lists = lists .stream().sorted(Comparator.comparing(User::getXxx).reversed()).collect(Collectors.toList()); //降序
lists = lists .stream().sorted(Comparator.comparing(User::getXxx)).collect(Collectors.toList()); //升序
lists = lists .stream().sorted(Comparator.comparing(User::getXxx).reversed()).collect(Collectors.toList()); //降序
lists = lists .stream().sorted(Comparator.comparing(User::getXxx).reversed().thenComparing(User::getYyy)).collect(Collectors.toList());//降序,升序
lists = lists .stream().sorted(Comparator.comparing(User::getXxx).thenComparing(User::getYyy, Comparator.reverseOrder())).collect(Collectors.toList()); //升序,降序
//list中的map某个key进行排序
Collections.sort(listMap , (o1, o2) -> o2.get("code").toString().compareTo(o1.get("code").toString()));//降序
Collections.sort(listMap,Comparator.comparing(o2 -> o2.get("code").toString()));//升序
3.对list逆序
List<int> list = 从某处得来的集合;
逆序前list数据(1,2,3,4,5)
逆序代码如下:
Collections.reverse(list);//list逆序
逆序后list数据(5,4,3,2,1)