专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

集合:HashMap原理

1、底层结构(数组、链表、红黑树)

(1)底层结构:

35_1.png

当数据的数量达到64,且链表的长度达到8时,链表结构将变为红黑树。

(2)红黑树

解决链化(链表很长)问题,提高查找效率

(3)hashmap扩容原理

数组变长,链表变短(以空间换时间),提升查找效率

2、map.put执行过程

(1)执行过程

35_2.png

(2)路由寻址:

路由寻址公式:(table.length-1)&node.hash

table.length:为2的n次方

:3、put方法的返回值

public class MyTest {
    public static void main(String[] args) throws IOException {
         HashMap<String,String> hashMap=new HashMap<>();
         hashMap.put("1","2");
         String value=hashMap.put("1","3");
         System.out.println(value);
    }
}

输出的结果是2不是3,执行的流程是3覆盖了2,但是返回的数值并不是新的值,而是以前的旧的value。

4、执行流程

(1)hashCode方法:

public class MyTest {
    public static void main(String[] args) throws IOException {
         System.out.println("zhai".hashCode());
    }
}
3737558

这个值是不能直接作为哈希表的下标的,因为哈希表的长度不会那么长。hash%table.length才是要查找的哈希表的下标

(2)put操作:

35_3.png

文章永久链接:https://tech.souyunku.com/22584

未经允许不得转载:搜云库技术团队 » 集合:HashMap原理

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们