温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在java8项目中对List对象属性去重

发布时间:2021-03-17 15:43:38 来源:亿速云 阅读:339 作者:Leah 栏目:开发技术

怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

第一种: 不使用java8

 private List<UserCar> removeDupliByRecordId(List<UserCar> userCars) {
 Set<UserCar> personSet = new TreeSet<UserCar>((o1, o2) ->o1.getRecordId().compareTo(o2.getRecordId()));
 personSet.addAll(userCars);

 return new ArrayList<UserCar>(personSet);
 }

 这也是大多数人第一想到的,借助 TreeSet 去重,其中 TreeSet 的其中一个构造函数接收一个排序的算法,同时这也会用到 TreeSet 的去重策略上.

public TreeSet(Comparator<? super E> comparator) {
 this(new TreeMap<>(comparator));
 }

第二种: 炫酷的java8写法

 List<Person> unique = persons.stream().collect(
  Collectors.collectingAndThen(
   Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
 );
 unique.forEach(p -> System.out.println(p));

第三种: 炫酷的java8写法

 List<String> names = new ArrayList<>();//用来临时存储person的id

 List<Person> personList = persons.stream().filter(// 过滤去重
  v -> {
   boolean flag = !names.contains(v.getName());
   names.add(v.getName());
   return flag;
  }
 ).collect(Collectors.toList());

java8根据某一属性过滤去重

//根据id去重
examRoomModelLists = examRoomModelLists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
        // 利用 TreeSet 的排序去重构造函数来达到去重元素的目的
        // 根据firstName去重
        () -> new TreeSet<>(Comparator.comparing(ExamRoomModel::getId))), ArrayList::new));

java8过滤StudentExamState=0的数据

em.setNoLoginExamineeCount((examinee.stream().map(ExamineeEntity::getStudentExamState).filter(x -> 
x == 0).collect(Collectors.toList())).size());
      }

java8过滤ExamRoomStudentCount=0的数据

 List<ExamRoomModel> filterList = examRoomModelLists.stream().filter(ExamRoomModel -> 
 !Objects.equals(ExamRoomModel.getExamRoomStudentCount(), 0)).collect(Collectors.toList());

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI