`

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原理分析

    Java HashMap原理分析 Java HashMap是一种基于哈希表的数据结构,它的存储原理是通过将Key-Value对存储在一个数组中,每个数组元素是一个链表,链表中的每个元素是一个Entry对象,Entry对象包含了Key、Value和指向...

    hashmap实现原理

    在深入探讨HashMap的实现原理之前,我们需要了解两个关键的接口方法:`hashCode()`和`equals()`。 根据《Effective JAVA》的建议,当重写`equals()`方法时,也应重写`hashCode()`方法。这是因为在HashMap中,`...

    HashMap原理分析及性能优化

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

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

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

    HashMap源码分析

    HashMap 的核心原理是将键(key)通过哈希函数转化为数组索引,然后将键值对(key-value pair)存储在数组的对应位置。如果多个键经过哈希计算得到相同的索引,HashMap 利用链表处理这种哈希冲突,形成链式存储。 ...

    图解hashMap工作原理

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

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

    hashmap的原理啊思想。

    面试必考之HashMap源码分析与实现

    面试中,HashMap的源码分析与实现是一个常见的考察点,因为它涉及到数据结构、并发处理和性能优化等多个核心领域。本篇文章将深入探讨HashMap的内部工作原理、关键特性以及其在实际应用中的考量因素。 HashMap基于...

    Java8 HashMap的实现原理分析

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

    hashmap面试题_hashmap_

    面试中,可能会被问及HashMap的性能优化、内存占用分析、以及在特定场景下的选择,如并发环境、内存敏感的应用等。 总结,HashMap是Java编程中的基础工具,掌握其工作原理和常见面试题,不仅能帮助我们应对面试,更...

    基于HashMap的用户标签处理兼Java中HashMap实现原理研究.pdf

    "基于HashMap的用户标签处理兼Java中HashMap实现原理研究" 本文研究了基于HashMap的用户标签处理方法,并对Java中HashMap的实现原理进行了深入研究。HashMap是一种高效的数据结构,可以快速地存储和检索数据。本文...

    HashMap的实现原理

    ### HashMap的实现原理 #### 1. HashMap概述 HashMap 是 Java 集合框架中一个非常重要的类,它实现了 Map 接口,并提供了基于哈希表的存储方式。与其它 Map 实现不同的是,HashMap 允许使用 `null` 键和 `null` 值...

    HashMap 源码分析

    《HashMap 源码解析——JDK11版本》 HashMap是Java中广泛使用的非同步散列表,其设计和实现是高效且灵活的。在JDK1.8之前,HashMap的底层数据结构采用的是数组+链表的方式,这种方式称为“拉链法”来解决哈希冲突。...

    java中HashMap的原理分析

    现在我们来详细分析HashMap的工作机制: 1. **存储操作**:当我们调用`put()`方法插入键值对时,HashMap首先计算键的哈希码,然后模上数组的大小,得到一个索引位置。如果该位置的链表为空,就直接创建一个新的链表...

    HashMap-hash原理

    ### HashMap的Hash原理详解 #### 一、概述 在Java编程语言中,`HashMap`是实现`Map`接口的...通过以上分析,我们可以更加深入地理解`HashMap`内部的工作机制,这对于理解和优化基于`HashMap`的应用程序具有重要意义。

    HashMap源码分析系列-第四弹:HashMap多线程解决方案.docx

    #### 二、HashMap线程安全问题分析 在多线程环境中,`HashMap`的主要线程安全问题包括但不限于: 1. **链表死循环问题**:在JDK 1.7中,当多个线程同时进行`put`操作时,可能会出现链表死循环的情况,这是一个严重...

    HashMap类.rar

    通过分析源码,开发者可以深入理解哈希表的工作原理,学习如何在易语言中实现高效的数据结构,这对于提升程序性能和优化内存管理至关重要。同时,这也为自定义数据结构或实现其他哈希表相关的功能提供了基础。

Global site tag (gtag.js) - Google Analytics