美文网首页
HashMap小结

HashMap小结

作者: Super_me14 | 来源:发表于2016-05-07 20:51 被阅读32次

HashMap数据结构

这周重点看了下hashmap的源码,这是种我们经常需要用的数据结构,因此有必要了解下它的组成。hashmap是由数组和链表组成的,在其构造函数上有两个参数,一个是容量另一个是负载因子。这两个决定了初始的hashmap能容纳多少。

HashMap存数据过程

大家都知道hashmap都是采用put(key,value)这个方式来存数据的吧,但是其中的过程确是另外的原理。当hashmap被new出来后,会用hash算法来来获取存放在数组的下标,也就是大家知道的bucket的位置。但是同时有个问题就是难道不会出现重复的位置吗?答案是肯定的。那就要使用剩下的链表来存储了。在链表的数据结构中有个next指针来。如果前面就有数据,就会把前一个数据存放在next指针中,然后新的数据放在链表的头部。

HashMap取数据过程

既然知道了存的过程必然也就想知道取数的过程了。在使用hashmap中用的是get(key)这个方法来取的,然而里面是通过上述的hash算法来取得对应的存放bucket位置下标。但是我们知道里面是个链表,也就意味着里面有许多数据,难道一个个都取出来吗。当然不是了,我们通过循环来用key.equeals()来一一比较。取出与之对应的那个value值。

最后讲几句

有人肯定会想到去优化hashmap,因为再每次使用的时候我们基本都是采用的默认的负载因子来确定hashmap的范围的,如果从开始就确定了数值,那么每次就不需要再去调用resize() 大大节省了许多时间。

相关文章

  • HashMap小结

    1 HashCode的作用就是将数据分组,这样数据进行比较的时候只需要跟它对应组的数据一一比较就好,大大提高效率。...

  • HashMap小结

    HashMap数据结构 这周重点看了下hashmap的源码,这是种我们经常需要用的数据结构,因此有必要了解下它的组...

  • HashMap 小结

    HashMap 是 Java 里面比较重要的一个类,我们先想想常用的两种数据结构 数组 和 链表 我们先回顾下这两...

  • HashMap分析小结

    HashMap是Java使用频率很高的容器对象,内部使用了很多优化算法,源码非常值得学习. 关于HashMap 非...

  • hashmap学习小结

    1.HashMap是基于Map接口实现的一种键-值对的存储结构,允许null值,同时非有序,...

  • Java 1.8 HashMap小结

    关于JDK1.6、1.7、1.8三个版本,HaspMap的实现是有区别的,特别是1.8,对hashmap的结构进行...

  • Hashmap和List小结

    tags: [JAVA]categories: 技术 List 中获取相同元素出现次数,得到元素和次数对应的 ma...

  • BloomFilter & Hyperloglog 去重 & 统

    去重小结 最近在做爬虫的时候,遇到了去重的问题,关于去重,有很多地方可以做,比如 内存级别,利用 hashmap,...

  • 深入剖析:JDK8中的HashMap初始化和扩容机制

    前言 本文大致分为四个部分:Hashmap初始化方法、初始化过程、扩容过程以及小结,希望大家看完这篇文章后会有所帮...

  • HashMap了解一下

    前言 HashMap HashMap类继承图 HashMap属性 HashMap构造函数HashMap(int i...

网友评论

      本文标题:HashMap小结

      本文链接:https://www.haomeiwen.com/subject/zchsrttx.html