Java集合数据结构——HashMap&HashSet
2021/9/16 1:04:58
本文主要是介绍Java集合数据结构——HashMap&HashSet,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、HashMap
Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。
1.Map 的常用方法
(1)关于Map.Entry<K, V>的说明
Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式 。
2.HashMap注意事项
当new一个 HashMap不给任何参数的时候,大小为0
HashMap<String,Integer> map = new HashMap<>();
1.HashMap什么时候开辟bucket数组占用内存?
在第一次put的时候才开辟内存。
1.首先对key求 hashcode,第一次put的时候,容量才真正有了,大小是16
2.然后找下标尾插
3.处理红黑树:当数组容量大于64,且链表的长度超过8
2.当 new 一个HashMap给参数时大小是多少
假设给的容量是19,那么HashMap的大小就是25也就是32,通过源码可以看到,
也就是说HashMap的大小一定是2的多少次幂,且 2n >= 给的容量大小。这个2次幂一定是大于等于你给的容量。
3.HashMap何时扩容?
根据负载因子0.75,大于0.75就会扩容
4.当两个对象HashCode相同会发生什么?
会发生哈希碰撞
5.如果两个键的 HashCode 相同,如何获取值对象?
在当前 HashCode 的数组位置开始遍历链表
6.重新调整HashMap大小存在什么问题吗?
会直接重新哈希
3.注意
1.Map中存放键值对的Key是唯一的,value是可以重复的
2.Map中的Key可以全部分离出来,存储到Set中来进行访问(因为Key不能重复
3.Map中的value可以全部分离出来,存储在Collection的任何一个子集合中(value可能有重复)
4.Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然后再来进行重新插入
二、HashSet
1.Set常用方法
2.Set 注意事项
1.Set是继承自Collection的一个接口类
2.Set中只存储了key,并且要求key一定要唯一
3.Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的
4.Set最大的功能就是对集合中的元素进行去重
5.实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础上维护了一个双向链表来记录元素的插入次序
6.Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入
完!
这篇关于Java集合数据结构——HashMap&HashSet的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门