集合晨考day18

1.JDK8HashMap数据结构
数组 + 单向链表 + 红黑树
2.HashMap特点(是否有序,是否可为null,是否可重复,
是否线程安全,初始容量多少,负载因子的含义,扩容多
少)
无序 可以为null 键不能重复 值可以重复 线程不安全 初始数组长度为16 负载因子
0.75 表示数组的使用率达到75% 就扩容 扩容为原数组长度的2倍
3.HashMap和Hashtable的区别
HashMap初始化长度为0的数组 第一次添加元素数组初始化为16
Hashtable初始化长度为11的数组
HashMap线程不安全 Hashtable线程安全
HashMap扩容2倍 Hashtable扩容2倍 + 1
4.Properties类,推荐使用什么方法存放数据,不推荐使
用什么方法,为什么
setProperty() 不推荐使用put 或者 putAll 方法 因为这两个方法允许添加非String数

5.遍历HashMap的几种方式
1.获取所有的键 keySet()
2.获取所有的值 values()
3.获取所有建制对的组合 entrySet()
以上三种的迭代器形式
6.说出你所知道的集合体系中的接口和实现类分别都有哪

Collection
List ArrayList LinkedList Vector
Set HashSet LinkedHashSet Treeset

Map HashMap LinkedHashMap TreeMap Hashtable Properties
7.HashMap添加元素的过程,什么时候扩容,什么时候转
换红黑树,什么时候取消转换红黑树?
使用hash值对数组长度-1 进行与运算 得到存在数组中的下标
如果此位置没有数据 则直接存放
如果此位置有数据
比较是否为完全相同的键
如果键完全相同 则直接覆盖
如果键不同 向下添加 判断为树节点 还是链表节点 分别以不同的方式添加
数组的使用率达到75%
当链表的长度大于8 并且数组的长度大于64转红黑树
当链表的长度小于6
8.TreeMap存储自定义的数据类型 有什么要求
必须实现Comparable接口 或者 编写 实现Comparator接口的比较器 来定义比较规则
9.HashSet去除重复元素的依据是什么?
两个对象equals比较为true hashCode相同 则认为是重复的对象
10.Comparable和Comparator接口的区别?
Comparable接口属于自然排序 因为是直接在类中书写
Comparator属于非自然排序 因为是单独书写排序类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值