首页 > 编程知识 正文

java集合面试题总结及答案,java笔试题

时间:2023-05-05 09:21:01 阅读:24741 作者:681

一、数组实例化后,可以改变数组的长度吗?

不,当数组实例化时,它们的长度是固定的。

二、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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。