ArrayList基层是以数组实现的,可以存储任何类型的数据,但数据容量有限制,超出限制是会扩增50%容量,查找元素效率高。
ArrayList是一个简单的数据结构,因超出容量会自动扩容,可认为它是常说的动态数组。
在 ArrayList 内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存中分配一个更大的数组来存储这些对象,因此可以将 ArrayList 集合看作一个长度可变的数组。
public class example01 {
public static void main(String[] args) {
ArrayList list = new ArrayList(); //创建arraylist集合
list.add("stu1"); //调用arraylist集合下add()方法,添加元素
list.add("stu2");
list.add("stu3");
list.add("stu4");
list.add("stu5");
System.out.println(list);
System.out.println("集合的长度: " + list.size()); //调用size()方法,获取集合中元素的个数
System.out.println("第二个元素是: " + list.get(1)); //调用get()方法,获取引索处元素
}
}
console:
[stu1, stu2, stu3, stu4, stu5]
集合的长度: 5
第二个元素是: stu2
集合和数组一样,索引的取值范围是从 0 开始的,最后一个索引是 size - 1。
- 优点
1、因为其底层是数组,所以修改和查询效率高。
2、自动扩容(1.5倍)。
- 缺点
1、插入和删除效率不高。(对比LinkList)
2、线程不安全。
由于 ArrayList 集合的底层是使用一个数组来保存元素的,在增加或者删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。
但这种数组的结构允许程序通过索引的方式来访问元素,因此使用 ArrayList 集合查找元素很方便。