一个不愿透露姓名的糕 2022-08-25 11:17 采纳率: 57.1%
浏览 30
已结题

2集合取出其中相同的不同的

如何用lambda表达式实现两个List实体类例如User集合,比较其中的id,然后相同的不同的抽离出来
@Data
public class User {
    private String name;
    private int age ;
    private String no;
    private int id;

    public User( int id,String name, String no, int age) {
        this.name = name;
        this.age = age;
        this.no = no;
        this.id = id;
    }
}


        List<User> listold = Arrays.asList(
                new User(1, "张三", "1", 23),
                new User(2, "李四", "2", 36),
                new User(3, "王五", "3", 29),
                new User(4, "赵六", "4", 29)
        );
        List<User> listnew = Arrays.asList(
                new User(1, "张三", "1", 28),
                new User(6, "狗蛋", "6", 20),
                new User(3, "王五", "3", 28),
                new User(7, "阿七", "7", 77)
        );
循环遍历两层进行对比可以实现感觉性能不高,不知如何用lambda表达式实现
我想要达到的结果:对比下两个集合然后取最listnew 中的与listold 相同的数据,listnew 中有listold 中没有的数据放入到两个新的集合
lista: {1, "张三", "1", 28),3},    {3,"王五", "3", 28}  新的 
listb:{6, "狗蛋", "6", 20},{7, "阿七", "7", 77}  之前没有的

  • 写回答

2条回答 默认 最新

  • 鱼找水需要时间 Java领域优质创作者 2022-08-25 11:38
    关注
             // 相同的
              List<User> together = listold.stream().filter(p->
                    listnew.stream().map(User::getId).collect(Collectors.toList()).contains(p.getId()))
                    .collect(Collectors.toList());
            // 不同的
            List<User> noTogether = listnew.stream().filter(p -> 
                    !listold.stream().map(User::getId).collect(Collectors.toList()).contains(p.getId()))
                    .collect(Collectors.toList());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 修改了问题 8月25日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探