HashMap,HashTable 区别,实现原理。

HashMap是HashTable 的轻量级,非线程安全的,都是实现了map接口
  区别:hashmap 允许空键值对的存在,非线程安全,效率高于hashtable,因为hashtable 是synchronize修饰,而hashmap不是
扩充:
  从hashtable类的注解可以看出,hashtable 是保留类,不建议使用
  单线程使用hashmap 效率最高
  多线程使用hashmap 的并发类 CurrentHashMap(并发容器) 代替HashMap
hashmap 和 treemap 的使用
  在map 中 插入,删除元素的时候,使用hashMap,速度快,如果要对一个key集合进行有序遍历,使用treemap 效率最高。
HashMap实现原理:
  hashmap 基于hash算法实现,我们通过put(key,value)存储,get(key)获取,当传入key时,hashmap会根据传入的key.hashCode()计算出hash值,根据hash值将value保存在bucket里面,当计算出相同的hash值得时候,我们称之为"hash冲突",hashmap的存储方式有两种,链表,红黑树,来存储相同hash孩子的value,当hash冲突个数较少的时候使用的是链表结构的,否则使用的是红黑树存储。

HashSet实现原理:
  hashSet是基于hashMap 实现的,底层就是调用hashmap 的方法,来保存元素的,hashSet不允许重复的值。

猜你喜欢

转载自www.cnblogs.com/hacker-lsr/p/11787268.html
今日推荐