【Java核心面试宝典】Day2、谈一谈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之后取消了循环)

|

|

支持随机访问

|

支持

|

不支持

|

|

插入效率

|

受插入位置的影响

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

image

加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0

|

插入效率

|

受插入位置的影响

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

[外链图片转存中…(img-P0Pqi2qE-1725517822227)]

加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值