ArrayList基层是以数组实现的,可以存储任何类型的数据,但数据容量有限制,超出限制是会扩增50%容量,查找元素效率高。
    ArrayList是一个简单的数据结构,因超出容量会自动扩容,可认为它是常说的动态数组。

    在 ArrayList 内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存中分配一个更大的数组来存储这些对象,因此可以将 ArrayList 集合看作一个长度可变的数组。

    1. public class example01 {
    2. public static void main(String[] args) {
    3. ArrayList list = new ArrayList(); //创建arraylist集合
    4. list.add("stu1"); //调用arraylist集合下add()方法,添加元素
    5. list.add("stu2");
    6. list.add("stu3");
    7. list.add("stu4");
    8. list.add("stu5");
    9. System.out.println(list);
    10. System.out.println("集合的长度: " + list.size()); //调用size()方法,获取集合中元素的个数
    11. System.out.println("第二个元素是: " + list.get(1)); //调用get()方法,获取引索处元素
    12. }
    13. }
    14. console
    15. [stu1, stu2, stu3, stu4, stu5]
    16. 集合的长度: 5
    17. 第二个元素是: stu2

    集合和数组一样,索引的取值范围是从 0 开始的,最后一个索引是 size - 1。

    • 优点

    1、因为其底层是数组,所以修改和查询效率高。
    2、自动扩容(1.5倍)。

    • 缺点

    1、插入和删除效率不高。(对比LinkList)
    2、线程不安全。

    由于 ArrayList 集合的底层是使用一个数组来保存元素的,在增加或者删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作

    但这种数组的结构允许程序通过索引的方式来访问元素,因此使用 ArrayList 集合查找元素很方便。