Java面试宝典每日3题:day22
Posted 闲言_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试宝典每日3题:day22相关的知识,希望对你有一定的参考价值。
目录
1.ArrayList 和 LinkedList 的区别是什么?
1. 数据结构实现:
ArrayList是动态数组数据结构实现,而LinkedList是双向链表数据结构实现。
2. 随机访问效率:
ArrayList比LinkedList在随机访问的时候效率更高,因为LinkedList是线性的数据存储方式,需要移动指针从前往后一次查找。
3. 增删效率:
LinkedList比ArrayList在执行增删操作的时候2效率较高,因为ArrayList底层是由数组实现的,增加或删除数组中的元素,可能伴随着大量元素的移动。
4. 内存空间占用:
LinkedList比ArrayList更占内存,因为LinkedList结点除了存储数据,还需要存储两个引用,一个存储上一个元素,一个存储下一个元素。
5. 线程安全:
ArrayList和LinkedList中的方法没有使用synchronized修饰,都不是线程安全的。
2.ArrayList 和 Vector 的区别是什么?
这两个类都实现了List接口,他们都是有序集合
线程安全:Vector使用了 synchronized修饰 是线程安全的,ArrayList是线程不安全的。
性能:ArrayList性能高于Vector,因为 Vector加了锁,效率肯定没ArrayList高的。
扩容:ArrayList和Vector都会根据实际需要调整容量,只不过 Vector扩容每次增加1倍,而ArrayList每次增加50%。
3.插入数据时,ArrayList、LinkedList、Vector谁速度较快?
ArrayList和LinkedList底层都是数组方式实现存储,但是插入元素时可能 涉及到元素的移动,消耗系统性能,所以这两者插入LinkedList慢。
LinkedList底层是由双向链表实现的,在插入元素的时候只需要记住当前项和前后项的元素即可, 不用涉及到大量元素的移动,所以插入快。
以上是关于Java面试宝典每日3题:day22的主要内容,如果未能解决你的问题,请参考以下文章