是否存在使用HashMap实现HashSet的问题?

sam*_*ara 0 java hashmap hashset

在java中,HashSet是使用HashMap实现的.因此,当我们向集合添加项目时,将执行以下代码.

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}
Run Code Online (Sandbox Code Playgroud)

当两个不同但具有相同散列的对象被添加到HashSet时会发生什么; 它(HashSet)是否包含对象或者会发生什么?

and*_*oke 5

hashmap使用.equals()以及.hash().除非.equals()返回true,否则两件事情不一样.hashset也是如此.

因此,如果两个对象是不同的但具有相同的哈希值,它们将被存储,并且两者都可用,因为它们.equals()仍将返回false.

这是真的,在内部,哈希来决定存储的对象,但具有相同的散列多个对象仍然可以存储(有轻微的性能损失,因为它变得更为复杂,但仅此而已).