HashMap原理简述
1.HashMap中有一个叫做Entry的内部类,包含key value两个变量,初始化有一个长度16的table数组,储存entry对象
2.调用put方法的时候,根据key计算hash值和table数组的长度,调用indexFor(hash,table.length)方法获得索引,存到table数组对应位置,如果hash值重复,则以链表linkedlist形式储存在同一个索引
3.get的时候,根据key的hash值计算索引,找到数组对应位置,如果有多个,就调用key的equals方法,返回true则返回value,没有返回null
一些关键点:
- HashMap有一个叫做Entry的内部类,它用来存储key-value对。
- 上面的Entry对象是存储在一个叫做table的Entry数组中。
- table的索引在逻辑上叫做“桶”(bucket),它存储了链表的第一个元素。
- key的hashcode()方法用来找到Entry对象所在的桶。
- 如果两个key有相同的hash值,他们会被放在table数组的同一个桶里面。
- key的equals()方法用来确保key的唯一性。
- value对象的equals()和hashcode()方法根本一点用也没有。
HashMap原理简述相关推荐
- hashmap原理_想要彻底搞懂HashMap?你得恶补下HashMap原理
引言 唉! 金九银十转眼已过, 面试现场不知所措: 不懂原理是我过错, 今日弥补只为求过. ====================================================== ...
- 【Java基础】HashMap原理详解
[Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...
- Java基础-hashMap原理剖析
Java基础-hashMap原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是哈希(Hash) 答:Hash就是散列,即把对象打散.举个例子,有100000条数 ...
- Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述
- title: Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述 - date: 2021/8/14 文章目录 CAS全称 Compare And Swap,是一种 ...
- 【图解版】HashMap原理初探
参考博客 Java中的equals和hashCode方法详解 链表 java提高篇(二三)-–HashMap Java HashMap的工作原理 算法的时间复杂度和空间复杂度-总结 Hashmap H ...
- HashMap原理以及TreeMap和Collections工具类(2022.6.10)
HashMap原理 当你往Map集合中添加元素的时,它的底层是怎样实现的? Map<String, Integer> hs = new HashMap<>();hs.put(& ...
- 电容三点式LC振荡器电路组成及工作原理简述
电容三点式LC振荡器电路组成及工作原理简述 [复制链接] husk2012 116 主题 21 好友 3550 积分 VIP会员 发消息 电梯直达 1# 发表于 2012-10-22 20: ...
- ELF PLT Hook 原理简述
[无线平台]ELF PLT Hook 原理简述 简述 Android 是基于Linux的操作系统,因此在Android开发平台上,ELF是原生支持的可执行文件格式:ELF文件格式除了作为可执行文件,还 ...
- java基础--java中HashMap原理
java中HashMap原理 内推军P21 P22 1.为什么用HashMap? HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射HashMap采用了数组和链表 ...
最新文章
- Hadoop集群搭建(六:HBase的安装配置)
- 自定义View的三种构造方法
- android avd orientation support,Android AVD-无法旋转风景/人像
- 数据科学竞赛-房价预测
- ArcEngine开发之自定义工具
- Python基础之补充1
- 小男孩与苹果树(翻译)(06年10月)
- git push --set-upstream
- torch中loss.bacword的理解
- 手机 — oppo手机录音放在哪个文件夹里
- 【PTA L2-012】关于堆的判断(堆的建立和特殊字符串的读入)
- php arcsin,三角函数在线计算器
- Makefile入门教程
- UI设计中有哪些常见的风格?
- 网付代理利润我把它分析得透透的
- c# ArrayList 和 Hashtable 的使用
- 指纹/人脸/gatekeeper学习笔记
- 计算机网络组成复习笔记
- 告别黑白CMD PowerShell + Windows Terminal 终端美化
- 用较新版本的Android Studio Chipmunk编译旧版本的Android 21的Sample
热门文章
- gcc编译python代码_GCC编译流程(一)
- linux gcc编译常见问题,常见gcc编译警告整理以及解决方法 - 常见gcc编译警告整理以及解决方法...
- 计算机考试环绕方式,计算机等级考试经验:wps文字环绕设置方法
- thinkjs能在浏览器html文件,think
- computed传参
- 面试5家公司拿3个Offer,测试收割机的面试经验全总结给你了
- springboot小程序授权登录获取用户手机号
- 通过简单api对接,免费制作查题公众号
- 春运期间改签后的火车票退票费收20%
- 电脑上怎么剪切、合并音乐 1