gpt4 book ai didi

java - 如何使用 Equivalence.wrap() 对 Set 进行重复数据删除?

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:17 25 4
gpt4 key购买 nike

我一定错过了一些关于Equivalence.wrap()的东西但以下测试对我来说失败了 - 仅在最后一行使用 guava 18.0。为什么?我究竟做错了什么?我的目标是通过将等效对象添加到集合中来消除重复。

    @Test
public void testEquivalenceWrap()
{
final Equivalence<Program2> eq = EquivalentIfIDsEven.INSTANCE;

Program2 p1 = new Program2();
p1.setId(2L);

Program2 p2 = new Program2();
p2.setId(4L);


//sanity-test equivalence impl
assertFalse(p1.equals(p2));
assertTrue(eq.equivalent(p1, p2));
assertTrue(eq.wrap(p1).equals(eq.wrap(p2)));

//dedupe in set
final Set<Equivalence.Wrapper<Program2>> set = new HashSet<>();
set.add(eq.wrap(p1));
set.add(eq.wrap(p2));

assertEquals(1, set.size()); //FAIL: size == 2
}

最佳答案

如果您的Equivalence未正确实现哈希,您就会出现此行为。如果没有看到更多代码,我无法提出更具体的建议,但这几乎肯定是正在发生的事情。

关于java - 如何使用 Equivalence.wrap() 对 Set 进行重复数据删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278750/

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