对于ArrayList,基础dataStructure是Array,对于LinkedList,它是Link对象,对于HashMap或HashTable,它可以是LinkedList或Tree的数组,HashSet中使用的数据结构是什么
答案 0 :(得分:5)
答案 1 :(得分:5)
散列的天真想法是将一个元素存储到一个数组中,位置索引计算如下:
所以这些可以通过数组或链表来完成。
在java中,HashSet
在内部使用HashMap
来自源代码
public HashSet() {
map = new HashMap<E,Object>();
}
答案 2 :(得分:2)
HashSet在内部使用HashMap存储数据。我相信HashMap是一个Entry对象数组。
了解HashMap内部结构的相关文章:
https://stackoverflow.com/questions/11596549/how-does-javas-hashmap-work-internally
答案 3 :(得分:0)
HashMap和HashSet(基于HashMap)的底层数据结构是哈希表http://en.wikipedia.org/wiki/Hash_table。在HashMap源代码中,它看起来像一个Entrys数组
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;
...