Java中的HashSet冲突

mar*_*x27 7 java hashset collision

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

我的问题是,我是否必须手动检查和处理碰撞,或者Java是否为我做了这些?

dng*_*fng 5

Java哈希映射/自动设置哈德尔哈希冲突,这就是重写equalshashCode方法的重要性.由于集合使用它们来区分重复或唯一条目.

同样重要的是要注意,由于多个对象被相同的哈希引用,因此这些哈希冲突具有性能上的影响.

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;
}
}
}
Run Code Online (Sandbox Code Playgroud)

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

  • 好吧,酷。我读了很多帖子,说 HashMap 具有内置碰撞处理功能,但我找不到任何具体说明 HashSet 具有内置碰撞处理功能的内容。 (2认同)