| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> HashMap、hashTable、ConcurrentHashMap讲解 -> 正文阅读 |
|
[数据结构与算法]HashMap、hashTable、ConcurrentHashMap讲解 |
HashMap是基于哈希表的Map接口的非同步实现,允许使用null值和null键,但不保证映射的顺序。底层使用数组和链表实现,依赖hashCode方法和equals方法保证键的唯一;如果键要存储的是自定义对象,需要重写hashCode和equals方法;当链表长度大于一定阈值时,链表转换为红黑树,这样减少链表查询时间。 HashMap在底层将key-value当成一个整体进行处理,这个整体就是一个Node对象。HashMap底层采用一个Node[]数组来保存所有的key-value对,当需要存储一个Node对象时,会根据key的hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个Node时,也会根据key的hash算法找到其在数组中的存储位置,再根据equals方法从该位置上的链表中取出该Node。* HashMap底层自动波扩容:创建时如果不指定容量初始值:HashMap 的初始容量为:16,当现有容量大于总容量* 加载因子时,HashMap 扩容规则为当前容量的两倍。加载因子默认都是:0.75。创建时指定容量初始值,而HashMap会将其扩容为2的幂次方大小,也就是说HashMap总是使用2的幂作为哈希表的大小。 Hashtable是基于哈希表的Map接口的同步实现,不允许使用null值和null键 底层使用数组实现,数组中每一项是个单链表,即数组和链表的结合体 Hashtable在底层将key-value当成一个整体进行处理,这个整体就是一个Entry对象。Hashtable底层采用一个Entry[]数组来保存所有的key-value对,当需 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 10:38:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |