ArrayList是List接口的一个实现类,它是程序中最常见的一种集合,内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素。因此ArrayList集合看做一个长度可变的数组
特点:
- 底层数据结构是数组,随机访问速度快(根据索引访问),插入和移除较慢。
- 插入的数据有顺序,元素可以重复
- 线程不安全,效率高。(线程不安全效率肯定高!)(线程安全之后效率就会不高)
- 为什么效率低?
- 数组结构的优点是便于对集合进行快速的随机访问,如果经常需要根据索引位置访问集合中的对象,使用由ArrayList类实现的List集合的效率较好。
- 数组结构的缺点:在向指定索引位置插入、删除指定对象效率较慢,如果经常需要向List集合的指定索引位置插入或删除对象,那么使用由ArrayList类实现的List集合的效率则较低,并且插入、删除对象的索引位置越小效率越低,原因是当向指定的索引位置插入对象时,会同时将指定索引位置及之后的所有对象相应的向后移动一位。
package MONA.demo05_arraylist;
import java.util.ArrayList;
/**
* ArrayList特点:
* 1.随机访问特别快
* 2.插入、移除指定位置慢
* 3.元素可以重复
*/
public class Demo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("bbb");
list.get(0);
list.add(1,"eee");
//遍历
//list.listIterator();
//for增强循环
//fori普通循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}