ArrayList是什么?
底层是一个Object数组,比较适合随机访问,查询效率高,增删效率低,线程不安全。默认初始容量为10,实现了RandomAccess接口(决定使用什么遍历方式,若实现了该接口则使用for循环遍历;若没有实现该接口则使用迭代器遍历),查询的效率比较高,比较适合顺序添加,随机访问的场景。 实现了Cloneable接口,即实现克隆功能;实现Serializable接口,表示支持序列化。可以自动扩容,默认每次扩容为原来的1.5倍。对元素进行增删时,需要进行一次元素的复制操作,比较消耗性能。
ArrayList 和 Vector 的区别是什么?
- Vector使用synchronize关键字来实现线程安全。而ArrayList 是线程不安全的。
2. ArrayList 的性能要优于Vector。 - ArrayList 和Vector都支持自动扩容,但ArrayList 默认为1.5倍而Vector默认为2倍。
ArrayList 和 LinkedList的区别是什么?
- ArrayList 底层使用动态数组,而LinkedList使用的是双向链表。
- ArrayList的随机访问效率要比LinkedList高,因为LinkedList的线性存储结构,需要移动指针从前往后一次查找。
- 在非首尾的增删操作,LinkedList的效率要高于ArrayList
- LinkedList比ArrayList 更占用内存,因为LinkedList的节点除了存储数据还存储了两个引用,分别指向直接前驱和直接后继。
- 综合来说,需要频繁读取集合中元素时,使用ArrayList ;在插入和删除操作较多时,使用LinkedList。
ArrayList和 Array有何区别?
- Array可以容纳基本类型和对象,而ArrayList只能容纳对象。
- Array是指定大小的,而ArrayList大小是固定的。
- Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。











网友评论