Java HashSet的底层数据结构

Java HashSet的底层数据结构,java,Java,对于ArrayList,底层数据结构是数组,对于LinkedList,它是链接对象,对于HashMap或HashTable,它可以是LinkedList或Tree的数组,HashSet中使用的数据结构是什么?HashSet在内部使用HashMap存储数据。我相信HashMap是一个条目对象数组 了解HashMap内部结构的相关帖子: 根据HashSet的备份数据结构,HashMap是一个HashMap JDK 1.6代码验证了这一点: public HashSet() { map = n

对于ArrayList,底层数据结构是数组,对于LinkedList,它是链接对象,对于HashMap或HashTable,它可以是LinkedList或Tree的数组,HashSet中使用的数据结构是什么?HashSet在内部使用HashMap存储数据。我相信HashMap是一个条目对象数组

了解HashMap内部结构的相关帖子:

根据HashSet的备份数据结构,HashMap是一个HashMap

JDK 1.6代码验证了这一点:

public HashSet() {
    map = new HashMap<>();
}
public HashSet(){
map=新的HashMap();
}

散列的天真想法是将元素存储到数组中的位置索引中,计算如下:

  • 通过处理元素的 数据并生成一个整数值(对 元素的大致意思是“磨碎它”)
  • 使用简单的mod操作映射到数组的范围
所以这些可以通过数组或链表来完成

在java中,
HashSet
在内部使用
HashMap

从源代码

public HashSet() {
    map = new HashMap<E,Object>();
}
public HashSet(){
map=新的HashMap();
}

HashMap和HashSet(基于HashMap)的底层数据结构是哈希表。在HashMap源代码中,它看起来像一个入口数组

Entry<K,V>[] table;

... 

static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        Entry<K,V> next;
        int hash;
...
Entry[]表;
... 
静态类条目实现Map.Entry{
最终K键;
V值;
进入下一步;
整数散列;
...

jdk源代码可以通过openjdk项目公开获取,为什么不自己寻找答案?@jtahlborn这不是一个挖掘jdk源代码的游戏,如果你可以玩,为什么不回答它?