Java容器高频面试题汇总

一、List与Set区别

List:有序,按对象进⼊的顺序保存对象,可重复,允许多个Null元素对象。可以使用Iterator取出 所有元素,在逐⼀遍历(使用迭代器进行访问);还可以使用get(int index)获取指定下标的元素(使用下标进行访问,即随机访问)。

Set:无序,不可重复,最多允许有⼀个Null元素对象,取元素时只能用Iterator接口取得所有元 素,在逐⼀遍历各个元素。

二、ArrayList和LinkedList区别

(1)首先,他们的底层数据结构不同,ArrayList底层是基于动态数组实现的,LinkedList底层是基于链表实现的。所以ArrayList要求连续内存存储,LinkedList可以分散存储在内存中。

(2)由于底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找;LinkedList更适合删除和添加,但是不适合查询,遍历只能使用Iterator

(3)另外ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当做队列来使用。

(4)关于性能方面也不是绝对的!LinkedList虽然在插入、删除的时候相较于ArrayList而言节约了移动元素的时间,但是增加了申请、释放node的时间。并且ArrayList如果尾插法效率是可以超过LinkedList的!

三、

posted @ 2022-04-02 15:41  金鳞踏雨  阅读(18)  评论(0)    收藏  举报  来源