Java中ArrayList类详解

ArrayList

一、ArrayList类概述

ArrayList类是一个可以动态变化的数组,与普通数组的区别就是它没有固定的长度。对于ArrayList的理解和应用,需要掌握其容量、扩容条件、add、get、remove、遍历删除等方法的使用,以及其底层数据结构和线程安全性等。

ArrayList继承了AbstractList,并实现了List接口。

二、引入语法格式

ArrayList objectName = new ArrayList<>();//E:泛指数据类型,用于设置objectName的数组类型

三、ArrayList初始容量及扩容:

  1. ArrayList的初始容量是指创建ArrayList对象时所分配的内存空间大小。在Java中,如果没有为ArrayList指定初始容量,它将自动分配一个默认的初始容量0。
  2. 当向ArrayList中添加元素时,如果元素的数量超过了当前容量,ArrayList会自动扩容。默认的扩容机制是将容量增加原来容量的1.5倍。需要注意的是,扩容操作会重新分配内存空间,并将原有元素复制到新空间中,这个过程需要消耗一定的时间。
  3. 如果你在创建ArrayList对象时指定了初始容量,那么ArrayList的初始容量就是这个指定的容量值。例如,如果你写“ArrayList list = new ArrayList(10);”,那么list的初始容量就是10。

四、ArrayList是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

1.添加元素

添加元素到ArrayList可以使用add()方法:

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<String>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        System.out.println(arrList);
    }
}

输出结果

[吐泡泡, SpitBubble]

2.访问元素

访问ArrayList中的元素可以使用get()方法:

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<String>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        System.out.println(arrList);
        System.out.println(arrList.get(0));//get()方法访问元素,索引从0开始
        System.out.println(arrList.get(1));
    }
}

输出结果

[吐泡泡, SpitBubble]
吐泡泡
SpitBubble

3.修改元素

修改ArrayList中的元素使用set()方法:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        System.out.println(arrList);
        System.out.println(arrList.get(0));
        System.out.println(arrList.get(1));
        arrList.set(0,"Java");//修改链表中的索引为0的元素
        System.out.println("修改后的数据为:\n"+arrList.get(0));
        System.out.println(arrList.get(1));
    }
}

输出结果

[吐泡泡, SpitBubble]
吐泡泡
SpitBubble
修改后的数据为:
Java
SpitBubble

4.删除元素

删除ArrayLIst中的元素可以使用remove()方法:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        System.out.println(arrList);
     	arrList.remove(0);
        System.out.println(arrList);
    }
}

输出结果

[吐泡泡, SpitBubble]
移除索引为0的数组后:[SpitBubble]

5.ArrayLIst长度

计算ArrayLIst中元素的数量使用size()方法:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        System.out.println("arrList的长度是:" + arrList.size());
    }
}

输出结果

arrList的长度是:2

五、ArrayList的迭代

1.for循环迭代数组列表中的元素

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        arrList.add("Java");
        //循环遍历数组
        for(int i = 0 ; i < arrList.length ; i++){
            System.out.println("arrList.get(i)");
        }
    }
}

输出结果

吐泡泡
SpitBubble
Java

2.for-each迭代数组列表元素

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        arrList.add("Java");
        //循环遍历数组
        for(String i : arrList ){
            System.out.println("arrList.get(i)");
        }
    }
}

输出结果

吐泡泡
SpitBubble
Java

3.迭代器(Iterator)遍历数组列表元素

调用ArrayList的iterator方法来获取一个迭代器对象,然后使用while循环和hasNext方法来遍历ArrayList中的元素。在每次循环中,我们调用next方法来获取下一个元素,并将其打印到控制台上。

import java.util.ArrayList;  
import java.util.Iterator;  
  
public class Test {  
    public static void main(String[] args) {  
        ArrayList<String> arrList = new ArrayList<String>();  
        arrList.add("吐泡泡");
        arrList.add("SpitBubble");
        arrList.add("Java"); 
  
        // 使用迭代器遍历ArrayList  
        Iterator<String> it = arrList.iterator();  
        while (it.hasNext()) {  
            String element = it.next();  
            System.out.println(element);  
        }  
    }  
}

输出结果

吐泡泡
SpitBubble
Java

六、底层数据结构

​ 在使用ArrayList时,可以通过add、get、remove等方法来添加、查询和删除元素。这些方法的具体实现是通过操作底层的数据结构——数组来完成的。例如,add方法会将元素添加到数组的末尾,get方法会根据索引值计算出元素在数组中的位置,并返回该位置上的元素,remove方法会根据元素的值查找该元素在数组中的位置,并将该位置上的元素置为null,并更新size属性。

​ 由于ArrayList的底层数据结构是数组,因此在查询和遍历元素时,速度非常快。但是,在添加和删除元素时,由于需要重新分配内存空间和复制数组,因此速度比较慢。为了提高程序的效率,可以使用一些优化技巧,例如使用扩容机制和预分配初始容量等。

​ 总之,ArrayList的底层数据结构是数组,这种数据结构在查询和遍历元素时非常高效,但是在添加和删除元素时可能会比较慢。为了提高程序效率,可以使用扩容机制和预分配初始容量等优化技巧。

你可能感兴趣的:(Java教程,java)