Hashset集合中的Java冲突



如何通过jUnit测试证明HashSet处理了冲突。例如,我可以在循环中用10000个元素填充HashSet,但哪个参数应该显示我有冲突,我想考虑一下集合大小,但不太确定

如果您想断言HashSet处理相等值的冲突,请输入两个相等值,并断言在之后集合中只有一个项

HashSet<String> set = new HashSet<>(Arrays.asList("A", "A"));
assertEquals(1, set.size());

如果您想断言HashSet处理相等的哈希代码的冲突,请使用相同的哈希代码放入不相等的值,并断言以下集合中有两项:

assertEquals("Aa".hashCode(), "BB".hashCode());
HashSet<String> set = new HashSet<>(Arrays.asList("Aa", "BB"));
assertEquals(2, set.size());

我不明白这个测试的目的是什么,但你可以这样做:

Set<String> mySet = new HashSet<>();
int numberOfRandomElements = 10000;
mySet.addAll(createRandomElements(numberOfRandomElements));
int diff = numberOfRandomElements - mySet.size();
System.out.println(String.format("Number of elements removed: %d", diff));

最新更新