Voiss 2019-09-29 15:25 采纳率: 0%
浏览 17766
已结题

如何使用Java8Lambda表达式对两个List<Object>中的多个元素进行对比筛选

        List<Student> list = new ArrayList<>();
        List<Student> list2 = new ArrayList<>();

        Student student1 = new Student();
        student1.setAge("一");
        student1.setSex(1);

        Student student2 = new Student();
        student2.setAge("一");
        student2.setSex(2);

        Student student3 = new Student();
        student3.setAge("三");
        student3.setSex(3);

        Student student4 = new Student();
        student4.setAge("四");
        student4.setSex(4);

        // List2
        Student student5 = new Student();
        student5.setAge("一");
        student5.setSex(1);

        Student student6 = new Student();
        student6.setAge("二");
        student6.setSex(9);

        Student student7 = new Student();
        student7.setAge("三");
        student7.setSex(9);

        Student student8 = new Student();
        student8.setAge("四");
        student8.setSex(9);

现在想要的结果是筛选出两个List中age,sex都一样的元素组成一个新List


        Set<Student> s = list.stream()
                .map(
                        user -> list2.stream()
                        .filter(log -> user.getAge().equals(log.getAge()))
                        .filter(log -> user.getSex() == log.getSex())

                        .findAny()
                        .orElse(user)

                        )
                .collect(Collectors.toSet());
```                         我自己试了下好像并没有卵用
  • 写回答

1条回答 默认 最新

  • VICTOR_fusheng 2019-09-29 17:11
    关注

    orElse的作用是如果没有发现则返回某个值,你的代码是没有相同的时候还是返回了list中的值,实际没有做任何操作,可以把user换成null,
    Set s = list.stream()
    .map(
    user -> list2.stream()
    .filter(log -> user.getAge().equals(log.getAge()))
    .filter(log -> user.getSex() == log.getSex())

                                .findAny()
                                .orElse(null)
                        )
                .filter(Objects::nonNull)
                .collect(Collectors.toSet());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿