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).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)
    了解更多
 https://blog.csdn.net/qq_35970057/article/details/109184430
posted @ 2020-11-30 10:36  leo丶  阅读(410)  评论(0编辑  收藏  举报