HashSet的基础DataStructure

Ull*_*las 3 java

对于ArrayList,基础dataStructure是Array,对于LinkedList,它是Link对象,对于HashMap或HashTable,它可以是LinkedList或Tree的数组,HashSet中使用的数据结构是什么

lre*_*der 6

根据Javadoc,HashSet的后备数据结构是HashMap.

JDK 1.6代码验证了这一点:

public HashSet() {
    map = new HashMap<>();
}
Run Code Online (Sandbox Code Playgroud)


sti*_*ike 5

哈希的天真想法是将一个元素存储到一个位置索引的数组中,该位置索引计算如下:

  • 通过处理元件的数据和生成的整数值(的"散列"的元件大致装置的想法"磨它")获得的元素的element_hash_code
  • 使用简单的mod操作映射到数组的范围

所以这些可以通过数组或链表完成.

在java中HashSet使用HashMap内部

从源代码

public HashSet() {
    map = new HashMap<E,Object>();
}
Run Code Online (Sandbox Code Playgroud)