`

hashMap原理分析

阅读更多

当你学了很多技术,才发现一切回到起点才是正确的选择,也是唯一正确的选择。工作5年多了,又开始重新看起了基础。才发现以前不懂的地方太多,需要沉下心来好好理解。

 

根据昨天的学习,从浅入深来理解一下hashMap

 

1 hashMap使用

 常用的两种方式获取hashMap里面的数据

 1) 首先获取map的keyset集合,然后遍历keyset集合,获取key对应map里面的value。

简单代码参考:

HashMap<String,String> map=new HashMap<String,String>();

Set<String> set=map.keySet();

for(String str:set){

map.get(str);

}

 

2) 获取map内部类entry的集合,遍历entryset

简单代码参考:

HashMap<String,String> map=new HashMap<String,String>();

Set<Map.Entry<String,String>> es=map.entrySet();

for(Map.Entry<String,String> entry:es){

System.out.println(entry.getValue());

 

扩展:根据hashMap的key唯一特性,可以用来做计数算法,并可以和TreeSet一起完成排序。实现Compare接口,重写compareTo方法。

 

2 hashMap底层原理

1) hashMap底层实现机制是由数组+单向链表组成,数组默认长度是16,扩展的方式是按2的指数,扩展       因子0.75,意思就是当数组被利用了75%,一般就认为数组满了,就会扩展数组的长度,至少是2倍的           方式扩展。

 

 2) hashMap存储的数据是Map.Entry对象,包含key,value,next(也是entry对象),hash。所以数组里

存的都是Map.Entry对象,当存储新元素时,会根据key的hashcode和数组的长度进行hash算法,计算         出 一个位置,如果该位置没有元素,则将该对象保存到相应位置,如果已经有了元素,则插入到链表,         或者重新hash计算新的位置。

 

扩展:hashSet底层是通过hashMap实现的。hashSet只需要得到key的集合,hashMap的value统一使用无   意义的常量来占用即可。

 

总结了一下昨天学到的东西,继续奋斗。

 

有兴趣的朋友可以加入我的互联网架构群:477819525

内有大量java初级,进阶,高级,架构视频和书籍资料,大家一起交流学习。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

1
8
分享到:
评论
1 楼 baeiou 2016-11-10  
与题目不相符

相关推荐

    java HashMap原理分析

    详细分析HashMap的存储原理,key值的hash地址以及扩容

    hashmap实现原理

    hashmap的底层及源码解析,很适合大家的学习,不要积分。

    HashMap原理分析及性能优化

    文章目录一.HashMap是什么二.HashMap继承类对比分析三.HashMap源码相关单词含义四.HashMap如何确定哈希桶数组索引位置五. HashMap 的 put 方法分析六.HashMap扩容机制七.HashMap线程安全性 一.HashMap是什么 ...

    hashMap基本工作原理,图解分析,基础Map集合

    hashMap基本工作原理,图解分析,基础Map集合

    hashmap原理和扩容.docx

    hashmap的扩容原理以及如何扩容,部分源码的分析。希望对大家有所帮助

    图解hashMap工作原理

    hashMap基本工作原理,图解分析,基础Map集合

    HashMap源码分析-思维导图.xmind

    hashmap的原理啊思想。

    Java8 HashMap的实现原理分析

    Java8之后新增挺多新东西,接下来通过本文给大家介绍Java8 HashMap的实现原理分析,对java8 hashmap实现原理相关知识感兴趣的朋友一起学习吧

    HashMap 源码分析

    首先,我们了解一下HashMap的底层结构历史,在JDK1.8之前采用的是数组+链表的数据结构来存储数据,是不是觉得很熟悉,没错这玩意在1.8之前的结构就和HashTable一样都是采用数组+链表,同样也是通过链地址法(这里简称...

    HashMap新增数据原理.docx

    深入理解HASHMAP底层原理,通过对源码进行解析分析HASHMAP执行过程,一篇文章帮助你深刻理解HASHMAP

    java中HashMap的原理分析

    HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap。详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题

    Java HashMap实现原理分析(一)

    主要介绍了Java HashMap实现原理的分析,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下

    java 中HashMap实现原理深入理解

    主要介绍了java 中HashMap实现原理深入理解的相关资料,需要的朋友可以参考下

    Java实现简易HashMap功能详解

    主要介绍了Java实现简易HashMap功能,结合实例形式详细分析了Java实现HashMap功能相关原理、操作步骤与注意事项,需要的朋友可以参考下

    HashMap(二)原理讲解

    1.HashMap的继承体系是怎么样的?...4.put数据原理分析? Node数组的长度一定是 2^n次方长度 5.什么是Hash碰撞?链化? 指的是,相同 hash 值的键值对会发生冲突组成链表 时间复杂度 由O(1)退化为O(n) 6.J

    在Java8与Java7中HashMap源码实现的对比

    主要介绍了在Java8与Java7中HashMap源码实现的对比,内容包括HashMap 的原理简单介绍、结合源码在Java7中是如何解决hash冲突的以及优缺点,结合源码以及在Java8中如何解决hash冲突,balance tree相关源码介绍,需要的...

    java源代码原理视频.txt

    java源代码原理,深入理解HashMap原理、高可用redis集群架构、zookeeper分布式、海量数据缓存、springAOP底层源码分析等

    HashMap集合,最详细底层源码分析及put ,get方法运行原理

    HashMap集合非线程安全; HashMap集合继承关系,实现的接口有: public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap集合继承了Map集合,实现了Map,Cloneable,...

    ConcurrentHashmap源码

    源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556

    Java开发面试必备知识技能总结视频合集

    HashMap源码分析与实现、JVM底层奥秘ClassLoader源码分析与案例讲解、大型网站数据库瓶颈之数据库分库分表方案实践、Spring Cloud Eureka场景分析与实战、分库分表之后分布式下如何保证ID全局唯一性、RPC底层通讯...

Global site tag (gtag.js) - Google Analytics