`

剖析hashmap

    博客分类:
  • java
阅读更多

今天来看看java中的hashmap,提到hashmap,我们会想到另一个类,没错那就是hashtable,它们之间的区别在此就不多说了,hashmap是允许key和value为null,而且它是非同步的。今天我们主要看看hashmap中影响hashmap执行性能的两个关键参数。

这两个参数是initialCapacity和loadfactor,capacity是hash表中buckets的数量,initialCapacity是hashmap创建时capacity的大小,loadfactor是作为hash表空间大小的一个评估。当hash表中的entries数量超过loadfactor与当前capacity的乘积时hash表将被rehashed(对内部数据重新组装)。

1、initialCapacity

为hashmap的初始容量,若未设置该值的话,还有一个参数为default_initial_capacity=16(调用无参构造函数时),如果hash函数在buckets间合理的传播元素,hashmap为一些常规的方法提供了固定时间性能操作(如get,put)。但若遍历集合视图就必须要求时间和hashmap的capacity大小(buckets的数量)相对称,再加上它的尺寸(key-value对的数量),因此,不要把capacity设置的太大或者不要把loadfactor设置的太小都是十分重要的,否则的话就会影响迭代的性能。

2、loadFactor

默认值为0.75,因为这个值在时间和空间消耗上提供了一个很好的权衡,高于这个值时虽然减少了日常空间的消耗,但是会增加检查的消耗(put,get调用时)

分享到:
评论

相关推荐

    java hashmap 深度剖析,和hashmap 相关面试题

    java hashmap 深度剖析,和hashmap 相关面试题

    HashMap源码深度剖析.md

    HashMap源码深度剖析,面试必备

    HashMap源码剖析共10页.pdf.zip

    《HashMap源码剖析》 HashMap是Java编程语言中一个非常重要的数据结构,它属于集合框架的一部分,提供了键值对(Key-Value)的存储方式。HashMap在内部使用了一个数组和链表来实现,实现了快速的查找、插入和删除...

    JavaHashSet和HashMap源码剖析编程开发技术

    本篇技术文档将深入剖析这两类数据结构的源码,帮助开发者理解其内部实现原理,提升在实际开发中的应用能力。 HashSet类是基于HashMap实现的,它不包含重复元素,并且不保证集合中元素的顺序。在HashSet中,元素的...

    马士兵老师HashMap学习笔记

    马士兵老师的HashMap学习笔记深入剖析了这一核心组件的工作原理,旨在帮助开发者更深入地理解其内部机制。本文将结合马士兵老师的讲解,详细阐述HashMap在不同JDK版本中的put操作流程,以及可能遇到的死循环问题。 ...

    剖析Java中HashMap数据结构的源码及其性能优化

    本文将深入剖析Java中HashMap的数据结构以及性能优化策略,特别是自Java 8以来的改进。 HashMap的核心在于其内部的哈希表存储机制。它包含一个数组,数组的每个元素都是一个链表的头节点,这种结构称为“桶”...

    Java集合框架源码剖析:HashSet 和 HashMap

     之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。  HashMap实现了Map...

    HashMap(JDK1.8)源码剖析

    HashMap(JDK1.8)源码剖析 ​ 这又是看了忘忘了看系列之一,今天有空写个文档记录下,希望能从JDK源码中慢慢悟出他们优秀的思想。本文主要记录以下几个方面。 ​ 1、HashMap的继承、实现结构 ​ 2、HashMap...

    hashmap_use_in_JDK7.zip

    通过对JDK7中HashMap源码的深入剖析,我们可以了解到HashMap的高效性和内部机制,这对于优化代码和理解数据结构有极大的帮助。同时,也需要注意在不同版本的JDK中,HashMap的实现可能会有所变化,例如JDK8引入了红黑...

    手写HashMap源码.rar

    通过对"MyHashMap"的深入剖析,我们可以了解到HashMap的精髓所在,包括哈希函数设计、冲突解决策略、数据结构的选择以及各种操作的实现细节。这对于理解和优化实际工作中的HashMap使用,以及在面试中展示自己的技术...

    深入理解Java之HashMap源码剖析

    深入理解Java中的HashMap源码,有助于我们更好地掌握这个常用数据结构的工作原理。HashMap是Java集合框架的重要组成部分,它实现了Map接口,提供了一种快速查找、插入和删除元素的方式。本文将详细解析HashMap的内部...

    尚硅谷-深入java8的集合3:HashMap的实现原理.pdf

    ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...

    Java常见笔试、面试题目深度剖析

    4. **集合框架**:Java集合框架包括List、Set、Queue、Map等接口和实现类,如ArrayList、LinkedList、HashSet、HashMap等。理解它们的区别、性能特点及使用场景非常重要。 5. **多线程**:Java提供了丰富的多线程...

    javahashmap源码-java_HashMap_jdk1.7:我的hashmap

    在JDK 1.7版本中,HashMap的实现机制有着独特的设计,本文将详细剖析其内部的工作原理和源码实现。 1. **HashMap的基本结构** HashMap基于哈希表(散列表)的数据结构,内部使用一个Entry数组作为主要的数据存储...

    Java常见笔试、面试系列深度剖析第3讲

    HashMap和HashSet则是常用的散列结构,它们提供快速的查找速度,但HashSet不保证元素的顺序。 再者,线程和并发处理是Java中的高级主题。Java提供了多种创建和管理线程的方式,如Thread类和Runnable接口。线程同步...

    Java常见笔试、面试题目深度剖析第二、三讲下载地址

    根据提供的信息,我们可以深入探讨与“Java常见笔试、面试题目深度剖析第二、三讲”相关的知识点。虽然直接的视频或文档链接无法在此处查看,但根据标题和描述中提到的信息,我们可以推测出讲座可能涉及的一些核心...

    Java常见笔试,面试题目深度剖析

    集合框架是Java的重要部分,面试题可能涵盖`List`、`Set`和`Map`接口及其实现类的特性,如`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等,以及它们之间的区别和适用场景。 ### 设计模式(Design Pattern) 设计...

    Brian Goetz - 构造一个更好的hashmap

    总体而言,Brian Goetz在文章中不仅深入剖析了ConcurrentHashMap的工作原理,还讲解了如何在保证线程安全的前提下优化数据结构以提高并发性能,这对于Java并发编程的学习者而言是非常有帮助的。通过阅读这篇文章,...

Global site tag (gtag.js) - Google Analytics