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笔记分享如下:
加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0
|
插入效率
|
受插入位置的影响
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
[外链图片转存中…(img-P0Pqi2qE-1725517822227)]
加入社区:https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0