java - Java 中的 HashSet 冲突

标签 java hashset collision

我有一个 Java 类程序,我想在其中使用 hashSets 比较文本文档目录。本质上,我的计划是为每篇论文创建一个字符串哈希集,然后将两个论文哈希集一起添加到一个哈希集中,并找出相同的 6 字序列的数量。

我的问题是,我是否必须手动检查和处理冲突,还是 Java 会为我做这些?

最佳答案

Java Hash Maps/Sets 自动处理 Hash 冲突,这就是重写 equalshashCode 方法很重要的原因。因为它们都被 Sets 用来区分重复或独特的条目。

同样重要的是要注意,这些哈希冲突会影响性能,因为多个对象被同一个哈希引用。

public class MyObject {
private String name;

//getter and setters


public int hashCode() {
   int hashCode = //Do some object specifc stuff to gen hashCode
   return int;
}

public boolean equals(Object obj) {
   if(this==obj) return true;
   if(obj instanceOf MyObject) {
       if(this.name.equals((MyObject)obj.getName())) {
           return true;
       }
   return false;
}
}
}

注意:标准 Java 对象(例如 String)已经实现了 hashCode 和 equals,因此您只需为您自己的数据对象类型执行此操作。

关于java - Java 中的 HashSet 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909325/

相关文章:

ios - 碰撞后如何阻止分数增加一以上?

java - 不同类型接口(interface)的两种实现——这不可能吗?

java - 闯入 Java 类

java - 去除重复内容 Java

c# - 如何使用项目的哈希值检查 HashSet 是否包含项目?

c++ - 如何协调跨进程的端口使用?

java - 如何正确处理一个Activity中的多个 fragment 交互监听器?

java - 如何根据字段的当前编辑内容更改 JSpinner 的背景颜色?

java - 如何在 Selenium 中测试动态生成的元素

c++ - 检查线是否穿过二维 map 上的墙