【问题标题】:Minus operation in java 8 for subtracting Listsjava 8中用于减去列表的减法运算
【发布时间】:2015-09-07 18:36:19
【问题描述】:

假设我有两个列表:

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

现在我想执行(list1 - list2)。预期的输出是{3}。如何使用 java 8 流来做到这一点?

【问题讨论】:

  • 请考虑设置操作(-)

标签: java arraylist java-8 java-stream


【解决方案1】:

如果你必须使用 Streams:

List<Integer> diff = list1.stream()
                          .filter(i -> !list2.contains(i))
                          .collect (Collectors.toList());

【讨论】:

  • 简单而完美。
【解决方案2】:

试试这个:

List<Integer> difference = new ArrayList<>(list1);
difference.removeAll(list2);
System.out.println("Remove: " + difference); //3

【讨论】:

  • 实现是正确的,但这不是交集。这是减法。交集应该导致两个集合之间的共同元素。
  • @mdev - 完成。只是重命名了变量。这个答案确实回答了 OP 的问题。
【解决方案3】:

使用 Apache 公共资源:

CollectionUtils.subtract(list1, list2);

优点:非常易读。 缺点:没有类型安全

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2011-03-26
    • 2012-04-15
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多