HashSet和HashMap源码实现分析
来源:互联网 发布:金融软件服务商排名 编辑:程序博客网 时间:2024/05/17 02:50
术语解释:
负载因子:
负载因子表示散表的装满程度,定义为散列表中节点的数目除以基本区域能容纳的节点数所得的商.DEFAULT_LOAD_FACTOR=0.75f,当数组中75%的空间都已被使用时,会重新开辟一个新数组,扩容到原来的两倍,把原来数组里面的元素复制到新数组里面
1、HashSet 底层是使用 HashMap 实现的。当使用 add 方法将对象添加到 Set 当中时,实际上是将该对象作为底层所维护的 Map对象的key,而value则都是同一个Object对象(该对象我们用不上)
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
组当中;
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR;
threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
table = new Entry[DEFAULT_INITIAL_CAPACITY];
init();
}
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(hash, key, value, i);
return null;
}
5、 HashMap的内存实现布局:
- HashSet和HashMap源码实现分析
- HashMap HashSet源码分析
- java-HashMap和HashSet源码分析
- HashSet和HashMap分析
- HashMap和HashSet(深入HashMap源码分析HashMap元素的存储)
- HashMap和HashSet(深入HashMap源码分析HashMap元素的存储)
- HashSet与HashMap关系之源码分析
- HashSet与HashMap关系之源码分析
- hashmap,HashSet,ArrayList,ConcurrentMap 源码分析
- 源码分析—HashMap、HashSet、HashTable
- java HashSet HashMap(源码分析)
- 文章标题 【Java源码浅析】关于HashMap和HashSet的异同和源码分析
- 从源码来理解HashMap和HashSet
- Java HashSet和HashMap源码剖析
- Java HashSet和HashMap源码剖析
- Java HashSet和HashMap源码剖析
- Java HashSet和HashMap源码剖析
- HashMap和HashSet的区别和分析
- JS中的小问题
- PHP基础教程-字符串
- PHP基础教程-数组
- Extjs 4学习系列 一
- mongodb入门
- HashSet和HashMap源码实现分析
- 有关于分类器训练的一点想法
- Windows编程革命简史
- 资治通鉴,卷八十六,进谏的艺术
- oracle学习记录之三
- mysql 忘记root密码解决方法
- 加密解密技术笔记
- 提示共享文件正在被另一用户使用(其实那用户没有在用)
- MQ队列管理器命令