_Onelone丶 2021-09-06 19:12 采纳率: 41.2%
浏览 38
已结题

List对象中,某属性值相同,如何去除指定其他属性的值,转成新的list

即,如果list中有两个对象的productId相同则去除两个其中一个productType=1,这个代码怎么写?stream流

  • 写回答

1条回答 默认 最新

  • 撸码社区 2021-09-06 20:55
    关注

    我写了一个类似的案例,望采纳!
    用户名称相同的用户,选取年龄大于19的

            List<User> users = Arrays.asList(
                    new User("张三", 18, 5000),
                    new User("张三", 20, 5000),
                    new User("张四", 19, 7000),
                    new User("张四", 22, 7000),
                    new User("张五", 22, 10000));
            System.out.println("处理前:");
            users.forEach(System.out::println);
            System.out.println("处理后:");
            Map<String, List<User>> collect = users.stream()
                    .collect(Collectors.groupingBy(User::getName));
            collect.keySet().forEach(c -> {
                collect.get(c).stream().filter(u -> u.getAge() > 19).forEach(System.out::println);
            });
    
    处理前:
    User(name=张三, age=18, salary=5000)
    User(name=张三, age=20, salary=5000)
    User(name=张四, age=19, salary=7000)
    User(name=张四, age=22, salary=7000)
    User(name=张五, age=22, salary=10000)
    处理后:
    User(name=张四, age=22, salary=7000)
    User(name=张三, age=20, salary=5000)
    User(name=张五, age=22, salary=10000)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月6日