java 8中用于减去列表的减法运算
Posted
技术标签:
【中文标题】java 8中用于减去列表的减法运算【英文标题】:Minus operation in java 8 for subtracting Lists 【发布时间】: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 流来做到这一点?
【问题讨论】:
请考虑设置操作(-) 【参考方案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);
优点:非常易读。 缺点:没有类型安全
【讨论】:
以上是关于java 8中用于减去列表的减法运算的主要内容,如果未能解决你的问题,请参考以下文章