HashMap 原理
相关基础
HashSe HashMap
Hashtable
HashMap 非线程安全 线程安全 ConcurrentHashMap
Hashtable 线程安全
HashMap可以接受null键值和值,而Hashtable则不能
哈希冲突 数组+链表
HashMap 中 bucket就是 图中的 0 ,1,2
HashSe HashMap
Hashtable
HashMap 非线程安全 线程安全 ConcurrentHashMap
Hashtable 线程安全
HashMap可以接受null键值和值,而Hashtable则不能
哈希冲突 数组+链表
HashMap 中 bucket就是 图中的 0 ,1,2
HashSet不能存储重复元素,因为HashMap的key集合不可以重复,本质也是通过equals()和hashCode()来判定两个对象是否重复,因此将对象存储在HashSet之前,必须先重写对象的equals()和hashCode()方法。
HashSet不能存储重复元素,因为HashMap的key集合不可以重复,本质也是通过equals()和hashCode()来判定两个对象是否重复,因此将对象存储在HashSet之前,必须先重写对象的equals()和hashCode()方法。
HashMap
哈希表 table数组
是一个线性数组 Entry[]
HashMap实现一个静态内部类 Entry : key value next
存取值
存 map.put(key,value) 每个key hash
int hash = key.hashCode();
int index = hash % Entry[].length;
Entry[index] = value;
// 取值时:
int hash = key.hashCode();
int index = hash % Entry[].length;
return Entry[index];
取 value = map.get(key)
二个 Key的hash 相同时 通过 Entry 的next区分 next指向
参考链接 http://blog.csdn.net/baidu_16757561/article/details/49850471
hash 确定一个key和value的唯一映射关系
hash 表
hash函数
解决冲突 1 链表方式 2 线性探测(步长 1 如果存在 就找下一个位置)
HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。