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

Java lambda交集两个列表并从结果中删除

居和顺
2023-03-14

我想对两个列表的交集使用Java lambda表达式,然后使用lambda表达式从列表中删除。

List<Person> first = new ArrayList<Person>(); 
List<Person> second = new ArrayList<Person>(); 
List<Person> temp = new ArrayList<>();
for (Person one : first) {
     for (Person two : second) {                        
        if(one.getName.equals(two.getName)) {
                        temp.add(two);
         }
     }
}
for (Person tmp : temp) {
     for (Person one : first) {
        if (one.getSurname.equals(tmp.getSurname)) {
              temp.remove(tmp);
        }
     }
}

我想用lambda表达式,我怎么做?

共有1个答案

越伟泽
2023-03-14

第一第二之间的交集:

List<Person> intersection = first.stream()
        .filter(p1 -> second.stream().anyMatch(p2 -> p2.getName().equals(p1.getName())))
        .collect(Collectors.toList());

根据first中的元素从MyList中删除元素

first.stream()
    .filter(p1 -> myList.stream().anyMatch(p2 -> p1.getSurName().equals(p2.getSurName())))
    .forEach(myList::remove);
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 从列表列表中删除重复项 (12个答案) 4年前关闭。 这是我的两个清单。 我的输出应为以下内容; 如何获得此输出? 先感谢您 问题答案: 您将必须将列表转换为元组列表,然后使用交集。请注意,下面的解决方案可能具有不同顺序的元素,并且由于我使用的是set,因此显然不会存在重复项。 您也可以将交叉点保存在变量中并获取最终列表,如果需要排序,则需要重复: 和交

  • 我在这里拥有的是一组三个数组列表。一个包含姓名、姓氏、uid和学位方案的学生数组列表。然后,我还有一个模块列表,每个模块还包含一个学生ID数组列表,用于在该特定模块上注册的学生。 我要做的是将学生的数组列表与用户ID的数组列表链接起来,这样程序就会查看ID,并将它们与包含所有学生详细信息的列表进行比较,然后编写一份包含完整学生详细信息和他们注册的模块的合并报告。 我的数组列表设置得很好,但是我很难

  • 问题内容: 我试图根据某些条件并执行一些步骤来找到两个列表。在学习阶段找不到方法:) 如您所见,逻辑很简单 根据某个过滤器从订单中获取所有项目,并与另一个过滤器相交并做一些事情。 问题答案: 最简单的方法是这样的:

  • 问题内容: 查询1: 查询2: 我想将两个结果合并为两列,其中缺少一列=查询2-查询1以加快处理速度。我该怎么做?示例: 我有两个结果: // ----------------------------------------查询:1 1 2 3 4 // --------------------------------------查询:2 4 5 6 8 // ------------------

  • 我一直试图从摘要列表中提取数据并保留列指示符。 这是一个数据的例子 我希望从每个结果列表中只提取groups ( 5行)和statistics (1行)选项卡,并将它们与列Var 1和Var2的相应值一起放在一个表中。在选项卡组选项卡中,row.names表示用于分析的处理。 我尝试使用扫帚::整洁(它适用于其他结果列表),但此列表分发失败 到目前为止,我已经能够从提取的组及其相关行名称创建表,但

  • 我正在使用hibernate 4和Spring 3。 我有5个表,每个表映射一个实体类。现在,如果我必须从1个表中选择列,我将执行以下操作: 此结果中的此值将为EmployeeEntity类型。 或者我也可以使用标准。 现在我的要求是我必须从所有5个表中得到结果。每个表中有1-2列。 早些时候,它是一个1表,所以我得到了一个实体,现在我得到了5个表的结果,所以如何在实体中映射它。 List res