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原理简述相关推荐

  1. hashmap原理_想要彻底搞懂HashMap?你得恶补下HashMap原理

    引言 唉! 金九银十转眼已过, 面试现场不知所措: 不懂原理是我过错, 今日弥补只为求过. ====================================================== ...

  2. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

  3. Java基础-hashMap原理剖析

    Java基础-hashMap原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.什么是哈希(Hash) 答:Hash就是散列,即把对象打散.举个例子,有100000条数 ...

  4. Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述

    - title: Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述 - date: 2021/8/14 文章目录 CAS全称 Compare And Swap,是一种 ...

  5. 【图解版】HashMap原理初探

    参考博客 Java中的equals和hashCode方法详解 链表 java提高篇(二三)-–HashMap Java HashMap的工作原理 算法的时间复杂度和空间复杂度-总结 Hashmap H ...

  6. HashMap原理以及TreeMap和Collections工具类(2022.6.10)

    HashMap原理 当你往Map集合中添加元素的时,它的底层是怎样实现的? Map<String, Integer> hs = new HashMap<>();hs.put(& ...

  7. 电容三点式LC振荡器电路组成及工作原理简述

    电容三点式LC振荡器电路组成及工作原理简述 [复制链接]     husk2012 116 主题 21 好友 3550 积分 VIP会员 发消息 电梯直达 1#  发表于 2012-10-22 20: ...

  8. ELF PLT Hook 原理简述

    [无线平台]ELF PLT Hook 原理简述 简述 Android 是基于Linux的操作系统,因此在Android开发平台上,ELF是原生支持的可执行文件格式:ELF文件格式除了作为可执行文件,还 ...

  9. java基础--java中HashMap原理

    java中HashMap原理 内推军P21 P22 1.为什么用HashMap? HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射HashMap采用了数组和链表 ...

最新文章

  1. Hadoop集群搭建(六:HBase的安装配置)
  2. 自定义View的三种构造方法
  3. android avd orientation support,Android AVD-无法旋转风景/人像
  4. 数据科学竞赛-房价预测
  5. ArcEngine开发之自定义工具
  6. Python基础之补充1
  7. 小男孩与苹果树(翻译)(06年10月)
  8. git push --set-upstream
  9. torch中loss.bacword的理解
  10. 手机 — oppo手机录音放在哪个文件夹里
  11. 【PTA L2-012】关于堆的判断(堆的建立和特殊字符串的读入)
  12. php arcsin,三角函数在线计算器
  13. Makefile入门教程
  14. UI设计中有哪些常见的风格?
  15. 网付代理利润我把它分析得透透的
  16. c# ArrayList 和 Hashtable 的使用
  17. 指纹/人脸/gatekeeper学习笔记
  18. 计算机网络组成复习笔记
  19. 告别黑白CMD PowerShell + Windows Terminal 终端美化
  20. 用较新版本的Android Studio Chipmunk编译旧版本的Android 21的Sample

热门文章

  1. gcc编译python代码_GCC编译流程(一)
  2. linux gcc编译常见问题,常见gcc编译警告整理以及解决方法 - 常见gcc编译警告整理以及解决方法...
  3. 计算机考试环绕方式,计算机等级考试经验:wps文字环绕设置方法
  4. thinkjs能在浏览器html文件,think
  5. computed传参
  6. 面试5家公司拿3个Offer,测试收割机的面试经验全总结给你了
  7. springboot小程序授权登录获取用户手机号
  8. 通过简单api对接,免费制作查题公众号
  9. 春运期间改签后的火车票退票费收20%
  10. 电脑上怎么剪切、合并音乐 1