一、数组实例化后,可以改变数组的长度吗?
不,当数组实例化时,它们的长度是固定的。
二、List、Set、Map的区别?
List元素:规则、可重复、空
set要素:无序、不可重复,只有一个是空的
Map中的元素:无序、无键重复、值可重复、空键、空值。
三. ArrayList和链接列表有什么区别?
ArrayList :
下面的层次结构是动态数组。
Arraylist的默认初始大小为10,默认扩展大小为1.5倍。
查询快,删除慢
链接列表:
最低的是双向链表。
LinkedList在没有扩展的情况下将元素添加到链表的末尾。
删除快,咨询慢。
四、如何加重list集合?
1.set集合
利用list集合的container方法进行循环遍历
五、数组和链表分别适用于什么场景? 为什么?
数组:查询多,删除少,数组的特性
链表:查询少,添加删除多,链表的特性。
六. HashMap的基础结构?
HashMap的基础数据结构是数组链表,在jdk1.8中,如果链表长度超过8,链表将转换为红黑树。
七、HashMap如何保存数据?
如果数组未初始化,则会创建一个缺省长度为16的数组。
检索hashmap的key值并将其转换为hash值,将数组的长度增加到数组的相应位置。
如果此链表为空,则直接插入。
如果链表是红黑树,如果元素是红黑树,则直接插入其中。
对于链表,遍历链表,并替换相同的数字(如果有)。 否则,直接插入末尾。
如果链表长度大于或等于8,则直接转换为红黑树。
八、韩素曼在1.7中和1.8中的区别是什么?
1.7的时候,没有红黑树。 在1.8中引入新特性,如果链表长度大于8,则转换为红黑树。
1.7时,插入滤芯,直接插入头部;1.8时,插入尾部。
容量扩大时,1.7容易发生死循环,1.8不发生死循环。
九.混血与混血有什么区别?
混叠映射:
非线程安全
允许空值
混列的默认初始化数组的大小为16,扩展乘以2,使用位运算获取混列
因为hash特性等原因,所以比HashTable效率更高。
HashTable :
线程安全
不能使用空值
hashTable的缺省初始值为11,扩展机制乘以2(1)进行建模计算。
标签:黑树、面试问题、java、HashMap、直接插入、链表、数组、集合、长度
来源: https://www.cnblogs.com/帅绿草48/p/13750558.html