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

如何使用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 burpsuite密码爆破
    • ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
    • ¥15 scikit安装之后import不了
    • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
    • ¥15 人脸识别相关算法 YOLO,AI等
    • ¥15 spark问题方便加V17675797079
    • ¥15 Python代码不打印的原因
    • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
    • ¥15 数学问题也不知道那种类型的问题
    • ¥15 R作图的时候,文本框重叠了怎么办?