Java基础:Hashmap和Hashtable
2019-01-07 本文已影响0人
无与凡想
HashMap和HashTable都是Map集合之下的一个实现类。它们的底层都是哈希表,也就是一种数组加链表的数据结构。而HashMap可以说是HashTable的一种轻量级实现。它们之间的区别大致如下:
HashMap是非线程安全的,它的性能比Hashtable高,允许空键空值,在jdk1.8后,它的底层数据结构有所变化。在长度小于等于6时,为哈希表,大于等于8时,变为红黑树。7可以作为之间的缓冲,避免反复改变数据结构。
Hashtable是线程安全的,不允许键或值为nul。
hashmap的初始值长度:hashmap的长度是无限的。为了更好的性能又不浪费空间,它设置了一个负载因子,默认为0.75。负载因子=实际长度/容量。因此如果知道要存储1000条数据,初始长度应该设为1333。如果不知道长度,默认为16。