java 8 stream List去重/集合去重

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(4182)   2023-03-28 11:29:14

简介

本博文主要讲解在Java 8中 如何通过stream流的方式去重。
 

List<String>通过stream去重

List unique = list.stream().distinct().collect(Collectors.toList());
List<String>通过stream去重是非常简单的。就上面的一句代码搞定
 

List<对象>通过stream根据集合对象的某个属性或者某些属性去重

// Person 对象
public class Person {
    private String id;
    
    private String name;
    
    private String sex;

    <!--省略 get set-->
}
根据name去重
// 根据name去重
List<Person> unique = persons.stream().collect(
            Collectors.collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
);
根据name sex两个属性去重
List<Person> unique = persons.stream().collect(
           Collectors. collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new)
);
地址:https://www.leftso.com/article/618.html

相关阅读

简介本博文主要讲解在Java 8中 如何通过stream流的方式去重
本文主要讲解通过使用 Stream.concat() 方法 去合并两个stream,新的stream由原来的两个stream所有元素组成(相同元素会覆盖)
java 8 stream 多字段排序,本例子主要使用stream进行多个字段的排序,使用了 comparators和Comparator.thenComparing()方法。比较器之间返回一个...
取出属性为集合List&lt;String&gtl; stateNameList = dictEntityList.stream().map(DictEntity::getName).colle...
Java stream 筛选集合中的唯一对象出来演示数据模型@AllArgsConstructor @NoArgsConstructor @Data public class UserInfo ...
//声明一个List集合List&lt;Person&gtl; list = new ArrayList();           list.add(new Person("1001", "小A...
java stream 按月(日期Date)分组统计首先是上一个简单的数据模型@Data @NoArgsConstructor @AllArgsConstructor public class ...
jdk8新特性流的使用
javastreamList根据对象某个属性升序或降序排序代码参考;publicclassMyTests{@NoArgsConstructor@AllArgsConstructor@Datapu...
首先,数据结构。这只是一个简单的橄榄球运动员,有名字和评级。class RugbyPlayer { private String name; private Integer ra...