首页 > 解决方案 > 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;
    }
}

标签: javahashset

解决方案


是的。冲突条目首先存储为链表,然后在某个阈值之后存储为树


推荐阅读