由于哈希冲突,哈希集是安全的吗

ylamdve6  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(451)

这个问题在这里已经有答案了

java中的hashset冲突(2个答案)
上个月关门了。

Set<String> set = new HashSet<>();
    set.add("FB");
    set.add("Ea");
    set.add("G#");
    set.add("FB");
    for(String s : set)
        System.out.println(s.hashCode());

输出:

2236
2236
2236

我的问题是它是否总是处理哈希冲突,如果哈希完全相同,它如何确切地知道对象是不同的?他们是否检查了equals,如果是这样的话,那就不能解决散列的问题。
与sha256相比,sha256对于我正在制作的程序几乎没有哈希集合如果我对字符串使用hashset,它会出错吗?string.hashcode()相互冲突的可能性有多大?比如,如果contains和add方法似乎都没有检查hash,那么它们为什么要使用hash呢?

cgyqldqp

cgyqldqp1#

相等的哈希代码并不意味着对象相等。根据collections约定,如果两个对象相等,则它们应该具有相同的哈希代码,反之亦然。
集合(如set和map)中的对象是否存在哈希冲突并不重要,它们将正常工作,直到equals方法能够区分对象。尽管性能可能会降低,因为如果所有哈希值都相同,set将有效地降低到list。

相关问题