我有兩個Foo集合。我無法更改Foo的實現,而Foo的equals函數執行不正確。我也不能從Foo繼承。我做自定義相等函數:我已經實現了使用番石榴的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());
}
};
現在,我需要檢查,如果我富的兩個集合包含相同的項目忽略使用此自定義功能的平等我正在尋找最好的方式順序
做到這一點。
您可以使用集嗎?否則,你可以從list1中檢查list2'containsAll'項目,反之亦然。 – mvd
我知道的Set的任何實現都使用equals函數來實現相等。如果有一個實現set的地方,你可以定義一個自定義相等函數,就像我使用的那個(或類似的)函數那麼這將是一個很好的解決方案 – Hendrik