使用其他列表中的值减少列表

Man*_* Zi 1 java lambda java-8 java-stream

是否可以根据其他列表中的条目减少列表?

这是类似的东西:

list1.forEach(l1 -> {
    list2.forEach(l2 -> {
        if (l1.getId() == l2.getId())
            reducedActions.add(l2); // that's the new list where the filtered entries should be add
    });
});
Run Code Online (Sandbox Code Playgroud)

编辑:我所感谢的:

l1: 10, 15, ,16
l2: 1, 2, 12, 10, 11, 14, 16
reducedActions: 10, 16
Run Code Online (Sandbox Code Playgroud)

hr6*_*134 6

那这个呢?

Set<Integer> ids = list2.stream().map(e -> e.getId()).collect(Collectors.toSet());
List<ElementType> reducedActions = list1.stream().filter(e -> ids.contains(e.getId())).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 说`List <ElementType>`或类似的.读者应该能够适应...... (4认同)
  • 不要忘记将第二个操作的结果分配给变量...... (3认同)
  • 请注意,原始问题依赖于身份,而"HashSet"依赖于平等!如果身份很重要,你可以使用`IdentityHashMap`中的`keySet()`. (2认同)
  • 添加错过的括号和收藏夹.但我更喜欢对toList()和toSet()方法使用静态导入. (2认同)