码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap底层及使用个人理解

时间:2017-10-04 18:01:24      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:一个   属性   dma   edm   个人   tree   重复   额外   获得   

HashMap原理
  HashMap底层采用数组结合链表形式保存,数组中保存的数据Entry,它有四个属性(key,value,next,hashcode)。我们都知道HashMap采用键值对保存数据。
实现流程如下,先用本地方法获取key的hashcode,再用该数据的hash值与数组长度-1,采用按位与获得数组的下标,便可以获取该键key所对应的值。

HashMap冲突(jdk中的实现):
  HashMap虽然可以很好的保存,查询数据,但是可能会发生多个key对应一个hashcode,其采用链表的形式保存这样的数据。
  实现如下:当发生HashMap冲突时,先将新值替换原有的值value。然后将新值Entry中的next指向旧值对应的地址。

HashMap优化使用:
  HashMap子类LinkedHashMap,继承了HashMap性能优点,在其基础上进行了改进,增加了排序功能,排序功能有插入时排序和最近访问排序。
  HashMap兄弟类TreeMap,TreeMap额外实现了SortedMap 接口,不仅可以对键进行排序,还可以对其元素便可以进行排序。就其性能来说,采用红黑树排序算法,性能很好。

个人推荐:如果要对Map进行排序,可以直接使用该TreeMap 而不是在程序中使用排序算法。重复造轮子,增加开发成本,也可能会成为以后开发的瓶颈。

HashMap底层及使用个人理解

标签:一个   属性   dma   edm   个人   tree   重复   额外   获得   

原文地址:http://www.cnblogs.com/orchid9/p/7625860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!