小编shr*_*eya的帖子

使用 java 8 在列表中查找另一个列表中不存在的元素

我有 2 个列表。要求是根据条件过滤掉list1中不在list2中的元素。

  Class Fighter
  {
    String name;
    String address;
  }     
  List<Fighter> pairs1 = new ArrayList();
    pairs1.add(new Fighter("a", "a"));
    pairs1.add(new Fighter("b", "a"));

    List<Fighter> pairs2 = new ArrayList();
    pairs2.add(new Fighter("a", "c"));
    pairs2.add(new Fighter("a", "d"));
    Set<Fighter> finalValues = new HashSet<>();


    finalValues = pairs1.stream().filter(firstList -> 
   pairs2.stream().noneMatch(secondList -> 
   firstList.getName().equals(secondList.getName())
            && firstList.getName().equals(secondList.getName()))).collect(Collectors.toSet());

    System.out.println(finalValues);
Run Code Online (Sandbox Code Playgroud)

预期输出:a=a, b=a

说明:list1 中的元素不在 list2 中

上面的代码没有给出预期的输出。请让我知道如何更正上述流代码以获得输出

java lambda java-8 java-stream

5
推荐指数
2
解决办法
8769
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1