假设我有两个列表:
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(1, 2, 4, 5);
现在我要执行(list1 - list2)
。预期的ouptut是{3}
。如何使用java 8流?
答案 0 :(得分:13)
如果必须使用Streams:
List<Integer> diff = list1.stream()
.filter(i -> !list2.contains(i))
.collect (Collectors.toList());
答案 1 :(得分:9)
试试这个:
List<Integer> difference = new ArrayList<>(list1);
difference.removeAll(list2);
System.out.println("Remove: " + difference); //3
答案 2 :(得分:1)
使用Apache公共资源:
CollectionUtils.subtract(list1, list2);
优点:可读性强。 缺点:没有类型安全性