java List<对象> 根据对象的一个属性进行去重

发布时间:2024年01月14日
ArrayList<BasicSectionCfg>list1=list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(BasicSectionCfg::getPamKey))),ArrayList::new));
这段代码使用Java 8中的流API将一个ArrayList<BasicSectionCfg>进行去重并转换成另一个ArrayList。

具体来说,大致可以分为以下几步:

使用stream()方法将原始的ArrayList转换成一个流Stream。
使用collect()方法将流Stream收集并转换成另一个集合。collect()方法接收一个Collector对象,并且Collectors类中提供了许多预定义的Collector实现,方便我们使用。在本段代码中,我们使用了Collectors.collectingAndThen()方法,它将一个Collector转换成另一个Collector,并在最后的结果上进行一些操作。
在Collectors.collectingAndThen()方法中,我们传递了两个参数:
第一个参数是Collectors.toCollection()方法,它创建了一个新的TreeSet集合,该集合使用Comparator.comparing()方法来对元素进行排序。其中Comparator.comparing()方法接收一个Function参数,该函数用于提取对象的某个属性,这里我们使用BasicSectionCfg::getPamKey方法来提取BasicSectionCfg对象的pamKey属性。
第二个参数是一个lambda表达式,它将TreeSet转换成ArrayList集合。具体地,它调用了ArrayList的构造函数,并将TreeSet作为参数传递给构造函数。
最终,这段代码的作用就是将list中的重复元素去重,并按照BasicSectionCfg对象的pamKey属性进行排序,得到一个新的ArrayList集合。

文章来源:https://blog.csdn.net/qq_46199553/article/details/135582947
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。