get方法
代码语言:javascript复制public V get(Object key) {
Node<K,V> e;
return (e = getNode(hash(key), key)) == null ? null : e.value;
}
get方法的实现就是计算key的hash值,然后通过getNode获取对应的value
remove方法
代码语言:javascript复制public V remove(Object key) {
Node<K,V> e;
return (e = removeNode(hash(key), key, null, false, true)) == null ?
null : e.value;
}
remove方法也是通过计算key的hash,调用removeNode来删除元素的
HashMap的一些特性
- 允许key和value为null
- 除了允许为努力了和同步,其他的和HashTable一样
- 不保证有序
- 初始容量太高或者太低对便利都不太好
- 当哈希表容量超过初始容量*装载因子时,哈希表会进行再散裂,桶数量*2
- 不同步,想要同步可以使用Collections工具类实现
Map m = Collections.synchronizedMap(new HashMap(...));
- 装载因子默认是0.75,设置高虽然会减少空间,但是遍历的开销会增加。因此在设置初始容量时,应该考虑好装载因子和容量的大小,如果设置的好,就不用再散裂了