今天研究了一下HashMap和Hashtable
记得最深的一点就是
HashMap是非线程安全的,k-v中,k和v可为null;
HashTable是线程安全的,k-v中,k和v不可为null;
由于线程安全的缘故,HashMap的效率比HashTable高。所谓的线程安全就是HashTable内部方法都是synchronized;
另ConcurrentHashMap不是加synchd,是基于lock。
最主要的两个方法:put和get
//put:
int hash = key.hashCode();
int i = hash % Entry[].length; //哈希值除链表的长度取余数,得到put的位置
Entry[i] = value;
//get
int hash = key.hashCode();
int i = hash % Entry[].length;
return Entry[i];