Java核心面试宝典】Day2、谈一谈List接口的实现?

网友投稿 730 2022-05-29

Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!

用坚持缔造技术、用指尖敲动未来!

和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改变未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣!

在此专栏《Java核心面试宝典》记录我们备战梦想的【day 2】!

【Java核心面试宝典】Day2、谈一谈List接口的实现?

目录

1、是否知道list接口的继承关系?

2、常用哪些List的实现类?都有什么特征?

1、ArrayList

2、Vector

3、LinkedList

3、ArrayList和LinkedList对比

Hello,你好呀,我是灰小猿,一个超会写bug的程序猿!

在Java的相关面试中,集合相关的内容问到的还是比较多的,一般都是List接口及常见实现,Map接口及常见实现和Set接口及常见实现,其中最经常问到的要数Map接口及其相关实现了,当然这并不代表其他两个就不重要了,所以今天先和大家聊一下在面试中关于list集合的一些问题。

1、是否知道list接口的继承关系?

关于list接口的继承关系,一般这都是在考察我们对底层源码的理解程度,那么我在这里给大家总结了一个list接口的继承关系图,从图中我们可以很清楚的看到list接口从上及下的继承过程,同时关于List接口和AbstractCollection类的上层接口Collection1的使用方法,大家可以看我的这篇文章“Java集合类之Collection接口,集合的“爸爸”接口了解一下?”

只有经常的阅读相关的底层源码,以至于在使用和提问到list接口的相关内容时,才能更好的掌握和应对。

2、常用哪些List的实现类?都有什么特征?

1、ArrayList

ArrayList的底层是动态数组,它具有的特点是查找快增删慢,默认的初识容量是10,每次采用1.5倍的扩容。

2、Vector

Vector和ArrayList是一样的,都是动态数组,具有和ArrayList一样的特征,但是不同的就是Vector是支持线程同步的,这也就说明ArrayList是不支持线程同步的。

3、LinkedList

LinkedList是采用链表结构来存储数据的,适用于动态的插入和删除操作,但缺点就是随机访问或遍历比较慢,是因为他需要从头结点一个一个的查找。同时它实现了Deque接口,因此还具有队列的特性。

3、ArrayList和LinkedList对比

为了能够更加方便的理解和记忆ArrayList和LinkedList,在这里还给大家总结了一个表格。

ArrayList

LinkedList

线程安全

不是同步的,不保证线程安全

不是同步的,不保证线程安全

底层数据结构

Object数组

双向链表(1.6之前是循环链表,1.7之后取消了循环)

支持随机访问

支持

不支持

插入效率

受插入位置的影响

不受插入位置影响

内存占用

ArrayList的空间浪费主要体现在list列表的结尾会预留一定的容量空间

LinkedList的空间花费主要体现在它的每一个元素都需要消耗比ArrayList更多的空间

以上是在list接口的相关问题中比较容易问到和考察的内容,其实关于list相关集合的使用,更多的还是要求对其底层源码的理解程度和在实际操作过程中对合适集合类型的选择。

感兴趣的小伙伴可以订阅专栏,

灰小猿陪你一起进步!

Java 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Java核心面试宝典】Day11、“异常处理”最新常见面试题,欢迎补充!
下一篇:NYOJ 492 King (状态压缩)
相关文章