我有一个 Java 类程序,我想在其中使用 hashSets 比较文本文档目录。本质上,我的计划是为每篇论文创建一个字符串哈希集,然后将两个论文哈希集一起添加到一个哈希集中,并找出相同的 6 字序列的数量。
我的问题是,我是否必须手动检查和处理冲突,还是 Java 会为我做这些?
最佳答案
Java Hash Maps/Sets 自动处理 Hash 冲突,这就是重写 equals
和 hashCode
方法很重要的原因。因为它们都被 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/