(转)java8实现对象列表去重

java8实现列表去重,java8的stream和lambda的使用实例

通过普通的方式也可以达到去重的效果,但是借助java8新特性可以很方便的实现列表去重,测试demo如下

实体类:

复制代码
public class Person {
    private int id;
    private String name;
    private int age;

    public Person() {
    }

    public Person(int id, String name, int age) {
        this.id = id;

        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
@Override
public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
复制代码

测试:

复制代码
       List<Person> persons = new ArrayList();
       List<Integer> ids = new ArrayList<>();//用来临时存储person的id
       persons.add(new Person(1, "name1", 10));
       persons.add(new Person(2, "name2", 21));
       persons.add(new Person(5, "name5", 55));
       persons.add(new Person(3, "name3", 34));
       persons.add(new Person(1, "name1", 10));

       List<Person> personList = persons.stream().filter(// 过滤去重
               v -> {
                   boolean flag = !ids.contains(v.getId());
                   ids.add(v.getId());
                   return flag;
               }
       ).collect(Collectors.toList());
       System.out.println(personList);
复制代码

还可以实现条件过滤和列表排序:

复制代码
//获取person集合中的所有大于18周岁,并排序
List<Person> personList= new ArrayList();
personList.add(new Person(1, "name1", 10));
personList.add(new Person(2, "name2", 21));
personList.add(new Person(5, "name5", 55));
personList.add(new Person(3, "name3", 34));
personList.add(new Person(4, "name4", 6));
personList.stream()
        .filter(p -> p.getAge() >= 18)//获取所有18岁以上的用户
        //.sorted(Comparator.comparing(Person::getAge))//依年纪升序排序
        .sorted(Comparator.comparing(Person::getAge).reversed())//依年纪降序排序
        .collect(Collectors.toList());
System.out.println(personList);
复制代码

转自:https://www.jianshu.com/p/63d2db850a8d

posted @   素净  阅读(6933)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示