Hashset 集合中的 Java 冲突

标签 java collections hashset

我如何通过 jUnit 测试证明 HashSet 处理了碰撞。例如,我可以在 for 循环中用 10000 个元素填充 HashSet,但是哪个参数应该告诉我发生了冲突,我想考虑集合大小,但不太确定。

最佳答案

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

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());

关于Hashset 集合中的 Java 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58934171/

相关文章:

java - .NET 的企业库的 Java 等价物是什么?

java - 在 Java 中的另一个 SWT 框架内单击按钮打开 SWT 模式

arrays - 数组的startsWith 语义

c++ - Qt 循环通过 QHash<QString,QString> 返回它的键值对

java - 使用给定的字符串参数搜索数组元素

java - 如何在 Java 哈希集中查找和返回对象

java - 在 JAVA 中设置工作不正确

java - Tomcat 在完全启动前的 HTTP 访问

java - 从 HashSet 中删除元素

java - 我的代码太慢(使用 jdbc、oracle.sql.BLOB 并在 blob 中搜索字符串)