java - HashSet 内部存储相同的哈希桶
问题描述
以下 Person 对象如何存储在同一个哈希桶中?作为链表?另外,根据java 8,如果达到某个阈值,则链表将转换为树?这也是正确的吗?
class TestHashSet
{
public static void main (String[] args) throws java.lang.Exception
{
Person p1 = new Person("Mike");
Person p2 = new Person("Mike");
Set persons = new HashSet();
persons.add(p1);
persons.add(p2);
Iterator iterator = persons.iterator();
while (iterator.hasNext()) {
System.out.println("Value: "+((Person)iterator.next()).getName() + " ");
}
}
}
class Person {
String name;
String getName(){
return name;
}
Person(String name){
this.name = name;
}
public int hashCode(){
return name.hashCode();
}
public boolean equals(Object o){
return false;
}
}
解决方案
是的。冲突条目首先存储为链表,然后在某个阈值之后存储为树
推荐阅读
- c++ - 如何在没有 OPENPROCESS 的情况下向句柄授予 RPM/WPM 权限?
- c# - 通过 Math Round() 向上和向下舍入
- python - Python 检查两个列表中的重复值和空值并映射它们
- git - 迁移/复制现有的本地 Git 存储库。到 TFS (Visual Studio)
- java - 如何详细计算这段代码的时间复杂度大O?
- selenium - 带有酱实验室连接的 selenium Web 驱动程序中的 java.lang.reflect.InvocationTargetException
- php - 如何在 foreach 循环中回显此 JSON 数据?
- android - 使用 OpenCV 检测账单
- pull-request - 有什么方法可以根据创建日期获取所有拉取请求
- ios - Jitsi - meet framework configuration in iOS