小编Fre*_*tin的帖子

在Java中是否有一种简单的方法可以使用自定义equals函数来获取两个集合之间的差异而不会覆盖equals?

我愿意使用lib.我只是想要一些简单的东西来区分两个集合,而不是正常的equals函数.

现在我使用类似的东西:

collection1.stream()
           .filter(element -> !collection2.stream()
                                          .anyMatch(element2 -> element2.equalsWithoutSomeField(element)))
           .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我想要的是:

Collections.diff(collection1, collection2, Foo::equalsWithoutSomeField);
Run Code Online (Sandbox Code Playgroud)

(编辑)更多背景:

应该提到我正在寻找已存在的东西而不是自己编码.如果不存在,我可能会根据您的想法编写一个小的工具.

此外,在我的情况下,Real复制是不可能的:集合是集合.但是,根据自定义等于的重复项是可能的,不应通过此操作删除.它似乎是很多可能的解决方案的限制.

java collections java-8 java-stream

5
推荐指数
1
解决办法
323
查看次数

标签 统计

collections ×1

java ×1

java-8 ×1

java-stream ×1