java8实现List中对象属性的去重方法

 更新时间:2021年03月17日 14:21:31   作者:tangerr  
这篇文章主要介绍了java8实现List中对象属性的去重方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

java8的stream流能完美解对象集合去重问题.

 List<UserCar> list1 = new ArrayList();
 UserCar userCar = new UserCar();
 userCar.setId(1);
 userCar.setCarNo("AA");
 list1.add(userCar);

 UserCar userCar1 = new UserCar();
 userCar1.setId(2);
 userCar1.setCarNo("AA");
 list1.add(userCar1);


 Person p1 = new Person(1, "11");
 Person p2 = new Person(1, "22");
 Person p3 = new Person(2, "11");
 List<Person> persons = Arrays.asList(p1, p2, p3);

第一种: 不使用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());

到此这篇关于java8实现List中对象属性的去重方法的文章就介绍到这了,更多相关java8 List对象属性去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java多线程环境下死锁模拟

    Java多线程环境下死锁模拟

    这篇文章主要介绍了模拟Java多线程环境下的死锁,文章介绍一些死锁的产生条件的相关资料,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2021-12-12
  • SpringBoot2 参数管理实践之入参出参与校验的方式

    SpringBoot2 参数管理实践之入参出参与校验的方式

    这篇文章主要介绍了SpringBoot2 参数管理实践,入参出参与校验,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-06-06
  • javaWEB实现相册管理的简单功能

    javaWEB实现相册管理的简单功能

    这篇文章主要介绍了javaWEB实现相册管理的简单功能,包括图片的上传、统一浏览、单个下载、单个删除,还有一个功能只能删除自己上传的文件,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • springboot如何使用redis的incr创建分布式自增id

    springboot如何使用redis的incr创建分布式自增id

    这篇文章主要介绍了springboot如何使用redis的incr创建分布式自增id,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java 中 Form表单数据的两种提交方式

    Java 中 Form表单数据的两种提交方式

    本文给大家分享java中form表单数据的两种提交方式,分别是get从制定的服务器中获取数据,pos方式提交数据给指定的服务器处理,本文给大家介绍的非常详细,需要的朋友参考下吧
    2016-12-12
  • Spring 应用上下文获取 Bean 的常用姿势实例总结

    Spring 应用上下文获取 Bean 的常用姿势实例总结

    这篇文章主要介绍了Spring 应用上下文获取 Bean,结合实例形式总结分析了Spring 应用上下文获取 Bean的实现方法与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • Mybatis如何使用ognl表达式实现动态sql

    Mybatis如何使用ognl表达式实现动态sql

    这篇文章主要介绍了Mybatis使用ognl表达式实现动态sql的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java不可逆加密算法之md5加密算法使用示例

    java不可逆加密算法之md5加密算法使用示例

    MD5的全称是Message-Digest Algorithm 5,他是一个不可逆的字符串加密算法,下面使用示例说明他的用法
    2014-01-01
  • Idea为java程序添加启动参数(含:VM options、Program arguments、Environment variable)

    Idea为java程序添加启动参数(含:VM options、Program arguments、Environme

    设置启动参数的意义就是当启动程序时,程序会优先读取idea的配置参数,这样就可以不用修改配置文件,下面这篇文章主要给大家介绍了关于Idea为java程序添加启动参数(含:VM options、Program arguments、Environment variable)的相关资料,需要的朋友可以参考下
    2022-12-12
  • 使用Mybatis-plus实现对数据库表的内部字段进行比较

    使用Mybatis-plus实现对数据库表的内部字段进行比较

    这篇文章主要介绍了使用Mybatis-plus实现对数据库表的内部字段进行比较方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论