博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java集合-HashMap源码
阅读量:4203 次
发布时间:2019-05-26

本文共 492 字,大约阅读时间需要 1 分钟。

介绍

HashMap是一个散列表(也叫哈希表),存储的内容是键值对(key-value)映射

HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一

JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间

  • HashMap不是线程安全的,同时key-value都可以为null,并且是无序的。
  • HashMap的初始大小为16,最大大小为2的30次方,默认的加载因子是0.75。
  • 初始容量只是哈希表在创建时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,就需要对该哈希表进行rehash操作(重建内部的数据结构)

JKD7和JDK8版本HashMap的区别

底层数据结构不一样,1.7是数组+链表,1.8则是数组+链表+红黑树结构(当链表长度大于8,转为红黑树)

转载地址:http://anvli.baihongyu.com/

你可能感兴趣的文章
poj 3863Business Center
查看>>
C#基本语法里几点和C不一样的地方
查看>>
Libpcap库编程指南--分析数据包
查看>>
LintCode 二叉树的路径和
查看>>
字符编码笔记:ASCII,Unicode 和 UTF-8
查看>>
C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32
查看>>
C++中const的用法:使代码更加健壮
查看>>
C++ 11:delete关键词和一条《Effective C++》的过时条款
查看>>
Google C++ 风格指南 :尽可能用 sizeof(varname) 代替 sizeof(type).
查看>>
C++中的委托构造
查看>>
RTP/RTCP 和 SRTP/SRTCP协议
查看>>
AES加密算法(Rijndael算法)
查看>>
WebRTC简介与代码架构
查看>>
WebRTC in the real world: STUN, TURN and signaling
查看>>
C++11的enum class 、enum struct 和 enum
查看>>
【转载】 webrtc中的网络反馈与控制
查看>>
C++11中的“万能引用”
查看>>
C++11:尽量使用std::array来代替数组
查看>>
通宵怒肝,保姆级Spring Cloud Alibaba从应用到源码解析学习路线,直线起飞!
查看>>
看了阿里P7粉丝的工资单:懂点算法,就这么香?附上他的数据结构与算法学习笔记!
查看>>