集合知识点
Posted programmerzx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合知识点相关的知识,希望对你有一定的参考价值。
HashMap底层
1.8前数组+链表 1.8后数组+链表/红黑树
当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表。而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率。
负载因子
HashMap所能容纳的最大数据量=length*负载因子(默认是0.75)
超过这个数目就要进行扩容(resize),扩容后的HashMap容量是之前容量的两倍。
负载因子过小,扩容就会很快,可能内存紧张;负载因子过大,就会扩容慢,造成时间效率低。
HashMap 的长度为什么是2的幂次方
因为hash值很大,能拿来直接用来做数组下标。所以令table数组下标i = (length-1)&hash,length-1后就能保证全为1,与操作之后,能保证散列的均匀,同时与运算效率高。
迭代器
迭代器是一个对象,他的工作是遍历并选择序列中的对象。开发人员不需要知道容器底层结构,就可以实现对容器的遍历。
Iterator只能正向遍历集合,ListIterato继承自Iterator,专门针对List,可以从两个方向来遍历List,同时支持元素修改。
Collection和Collections
Collection是集合类的上级接口,继承与他有关的接口主要有List和Set
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作
以上是关于集合知识点的主要内容,如果未能解决你的问题,请参考以下文章