用于减去列表的java 8中的减号操作

时间:2015-06-22 10:35:17

标签: java arraylist java-8 java-stream

假设我有两个列表:

List<Integer> list1 =  Arrays.asList(1, 2, 3);
List<Integer> list2 =  Arrays.asList(1, 2, 4, 5);

现在我要执行(list1 - list2)。预期的ouptut是{3}。如何使用java 8流?

3 个答案:

答案 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);

优点:可读性强。 缺点:没有类型安全性