gpt4 book ai didi

java - 使用自定义相等函数检查两个集合是否相同(忽略顺序)

转载 作者:行者123 更新时间:2023-11-30 06:57:58 25 4
gpt4 key购买 nike

我有两个 Foo 集合。我无法更改 Foo 的实现,并且 Foo 的 equals 函数实现不正确。我也不能继承 Foo。我执行自定义相等函数:我已经使用 guava 的 Predicate 函数实现了。为了给您一个想法,实现看起来有点像这样。

new Predicate<Pair<Foo, Foo>>() {
@Override
public boolean apply(@Nullable Pair<Foo, Foo> input) {
Foo one = input.getFirst();
Foo two = input.getSecond();
return Objects.equals(one.getId(), two.getId());
}
};

现在我需要检查我的两个 Foo 集合是否包含相同的项目忽略顺序

我正在寻找使用此自定义相等函数执行此操作的最佳方法。

最佳答案

你可以用 Guava 包装你的类 Equivalence并将其存储在集合中。

Equivalence<Foo> eq = new Equivalence<Foo>{
// implement equals and hashcode
};
Set<Equivalence<Foo>> set1 = new HashSet<>();
set1.add(eq.wrap(someFoo));

这样你就可以做一个双向的 containsAll() 或做

Sets.difference(set1, set2).isEmpty()

关于java - 使用自定义相等函数检查两个集合是否相同(忽略顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33138276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com