Java HashSet的底层数据结构
对于ArrayList,底层数据结构是数组,对于LinkedList,它是链接对象,对于HashMap或HashTable,它可以是LinkedList或Tree的数组,HashSet中使用的数据结构是什么?HashSet在内部使用HashMap存储数据。我相信HashMap是一个条目对象数组 了解HashMap内部结构的相关帖子: 根据HashSet的备份数据结构,HashMap是一个HashMap JDK 1.6代码验证了这一点: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
public HashSet() {
map = new HashMap<>();
}
public HashSet(){
map=新的HashMap();
}
散列的天真想法是将元素存储到数组中的位置索引中,计算如下:
- 通过处理元素的 数据并生成一个整数值(对 元素的大致意思是“磨碎它”)
- 使用简单的mod操作映射到数组的范围
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源代码的游戏,如果你可以玩,为什么不回答它?