当你学了很多技术,才发现一切回到起点才是正确的选择,也是唯一正确的选择。工作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初级,进阶,高级,架构视频和书籍资料,大家一起交流学习。
相关推荐
Java HashMap原理分析 Java HashMap是一种基于哈希表的数据结构,它的存储原理是通过将Key-Value对存储在一个数组中,每个数组元素是一个链表,链表中的每个元素是一个Entry对象,Entry对象包含了Key、Value和指向...
在深入探讨HashMap的实现原理之前,我们需要了解两个关键的接口方法:`hashCode()`和`equals()`。 根据《Effective JAVA》的建议,当重写`equals()`方法时,也应重写`hashCode()`方法。这是因为在HashMap中,`...
文章目录一.HashMap是什么二.HashMap继承类对比分析三.HashMap源码相关单词含义四.HashMap如何确定哈希桶数组索引位置五. HashMap 的 put 方法分析六.HashMap扩容机制七.HashMap线程安全性 一.HashMap是什么 ...
hashMap基本工作原理,图解分析,基础Map集合
HashMap 的核心原理是将键(key)通过哈希函数转化为数组索引,然后将键值对(key-value pair)存储在数组的对应位置。如果多个键经过哈希计算得到相同的索引,HashMap 利用链表处理这种哈希冲突,形成链式存储。 ...
hashMap基本工作原理,图解分析,基础Map集合
hashmap的原理啊思想。
面试中,HashMap的源码分析与实现是一个常见的考察点,因为它涉及到数据结构、并发处理和性能优化等多个核心领域。本篇文章将深入探讨HashMap的内部工作原理、关键特性以及其在实际应用中的考量因素。 HashMap基于...
Java8之后新增挺多新东西,接下来通过本文给大家介绍Java8 HashMap的实现原理分析,对java8 hashmap实现原理相关知识感兴趣的朋友一起学习吧
面试中,可能会被问及HashMap的性能优化、内存占用分析、以及在特定场景下的选择,如并发环境、内存敏感的应用等。 总结,HashMap是Java编程中的基础工具,掌握其工作原理和常见面试题,不仅能帮助我们应对面试,更...
"基于HashMap的用户标签处理兼Java中HashMap实现原理研究" 本文研究了基于HashMap的用户标签处理方法,并对Java中HashMap的实现原理进行了深入研究。HashMap是一种高效的数据结构,可以快速地存储和检索数据。本文...
### HashMap的实现原理 #### 1. HashMap概述 HashMap 是 Java 集合框架中一个非常重要的类,它实现了 Map 接口,并提供了基于哈希表的存储方式。与其它 Map 实现不同的是,HashMap 允许使用 `null` 键和 `null` 值...
《HashMap 源码解析——JDK11版本》 HashMap是Java中广泛使用的非同步散列表,其设计和实现是高效且灵活的。在JDK1.8之前,HashMap的底层数据结构采用的是数组+链表的方式,这种方式称为“拉链法”来解决哈希冲突。...
现在我们来详细分析HashMap的工作机制: 1. **存储操作**:当我们调用`put()`方法插入键值对时,HashMap首先计算键的哈希码,然后模上数组的大小,得到一个索引位置。如果该位置的链表为空,就直接创建一个新的链表...
### HashMap的Hash原理详解 #### 一、概述 在Java编程语言中,`HashMap`是实现`Map`接口的...通过以上分析,我们可以更加深入地理解`HashMap`内部的工作机制,这对于理解和优化基于`HashMap`的应用程序具有重要意义。
#### 二、HashMap线程安全问题分析 在多线程环境中,`HashMap`的主要线程安全问题包括但不限于: 1. **链表死循环问题**:在JDK 1.7中,当多个线程同时进行`put`操作时,可能会出现链表死循环的情况,这是一个严重...
通过分析源码,开发者可以深入理解哈希表的工作原理,学习如何在易语言中实现高效的数据结构,这对于提升程序性能和优化内存管理至关重要。同时,这也为自定义数据结构或实现其他哈希表相关的功能提供了基础。