当前位置: 首页 > 知识库问答 >
问题:

为集合中有其他类似元素的元素筛选流

魏景龙
2023-03-14

我有这个代码:

        List<MyObject> filteredObjects = myObjects.stream()
            .filter(anObject -> 
                 Collections.frequency(myObjects, anObject) > 1)
                 .collect(Collectors.toList()
            );

它的工作是让我获得myObject集合中不止一次出现的对象。

我需要修改这段代码,使它给我的对象不仅在等式上匹配,而且在属性子集上匹配。

因此,如果MyObject具有属性foobarbaz。我希望过滤器给我满足以下条件的对象:foobar,还有另一个元素具有相同的值。

共有1个答案

裴彦
2023-03-14

您可以创建一个包含这些属性的自定义对象(< code>foo,< code>bar),这些属性需要使用这些对象作为键来匹配和生成< code>Map。

在下面的代码中,为了简洁起见,我使用Java 16 record来定义一个键。

当您手上有一个映射,该映射将具有相同属性集的所有对象与相同的键相关联时,剩下的唯一事情就是过滤大小大于1的值。

List<MyObject> filteredObjects = myObjects.stream()
    .collect(Collectors.groupingBy(
        obj -> {
            record Key(String foo, String bar) {}
            return new Key(obj.getFoo(), obj.getBar());
    }))
    .values().stream()
    .filter(list -> list.size() > 1)
    .flatMap(List::stream)
    .toList(); // for Java 16+ or collect(Collectors.toList()) for earlier versions
 类似资料:
  • 我是冬眠新手,不会RTFM,所以我希望有人能帮我节省很多时间。 我的数据库中的对象之间有多对多的关系。假设员工和工作。 我想选择分配给给定员工的所有作业。我的对象乔布斯有一个正在处理它的所有员工的列表。所以,在java中,它应该是:作业job.employees.contains(员工)。除了我需要把它变成一个Hibernate查询什么的。 现在,我在选择所有东西后,正在Java中使用蛮力。 如何

  • 问题内容: 我有以下HTML结构: 我只想选择之前的内容。我怎样才能做到这一点?在我的内容中,越来越多的东西,因此解决方案应该是通用的。 问题答案: 据我所知,CSS没有提供将 在* 选择器 之前定位的任何选择器。您能否将其选择为()之后的? * 如您所见,这可能是您依赖CSS时可以使用的最佳选择器,尽管您可以轻松地向之前的每个类添加一个类。这样可以避免您在另一个段落和段落节之前有一个段落节的情况

  • 我有一本字典。 我想找到两个元素的组合,其中每个元素必须来自不同的判决键。 例如:就是这样的组合,而不是这样的组合。 我已经试过这个了 但是它给了和两个不同的组合,但是我只想要其中一个。

  • 本文向大家介绍概述jQuery的元素筛选,包括了概述jQuery的元素筛选的使用技巧和注意事项,需要的朋友参考一下 1、eq()    筛选指定索引号的元素 2、first()  筛选出第一个匹配的元素 3、last()   筛选出最后一个匹配的元素 4、hasClass()  检查匹配的元素是否含有指定的类 5、filter()  筛选出与指定表达式匹配的元素集合 6、is()    检查元素是

  • 问题内容: 我正在使用Selenium将Web测试添加到我的项目中。我已经有很多使用以下方法检查特定元素的测试: 这很好。现在,我还有另一个要求。这是在我生成的页面中: 如何掌握错误消息?我想要一些允许我在dateElement之后请求带有“错误”类的span元素的东西。 (此错误消息是由Spring MVC合并的,因此直接更改它并不容易。我想可能是这样,但我不希望这样做)。 任何其他想法都欢迎。

  • 问题内容: 我对如何在Java中执行此操作有一般的想法,但是我正在学习Python,但不确定如何执行。 我需要实现一个函数,该函数返回一个包含列表中所有其他元素的列表,从第一个元素开始。 到目前为止,我不确定从这里开始该怎么做,因为我只是在学习Python中的for循环是如何不同的: 问题答案: