Java ArrayList

Java ArrayList

Java 集合框架

ArrayList 類是一個可以動態修改的陣列,與普通陣列的區別就是它是沒有固定大小的限制,我們可以新增或刪除元素。

ArrayList 繼承了 AbstractList ,並實現了 List 介面。

ArrayList 類位於 java.util 包中,使用前需要引入它,語法格式如下:

import java.util.ArrayList; // 引入 ArrayList 類

ArrayList<E> objectName =new ArrayList<>();  // 初始化
  • E: 泛型資料型別,用於設定 objectName 的資料型別,只能為引用資料型別
  • objectName: 物件名。

ArrayList 是一個數組佇列,提供了相關的新增、刪除、修改、遍歷等功能。

新增元素

ArrayList 類提供了很多有用的方法,新增元素到 ArrayList 可以使用 add() 方法:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);
    }
}

以上例項,執行輸出結果為:

[Google, itread01, Taobao, Weibo]

訪問元素

訪問 ArrayList 中的元素可以使用 get() 方法:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites.get(1));  // 訪問第二個元素
    }
}

注意:陣列的索引值從 0 開始。

以上例項,執行輸出結果為:

itread01

修改元素

如果要修改 ArrayList 中的元素可以使用 set() 方法:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        sites.set(2, "Wiki"); // 第一個引數為索引位置,第二個為要修改的值
        System.out.println(sites);
    }
}

以上例項,執行輸出結果為:

[Google, itread01, Wiki, Weibo]

刪除元素

如果要刪除 ArrayList 中的元素可以使用 remove() 方法:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        sites.remove(3); // 刪除第四個元素
        System.out.println(sites);
    }
}

以上例項,執行輸出結果為:

[Google, itread01, Taobao]

計算大小

如果要計算 ArrayList 中的元素數量可以使用 size() 方法:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites.size());
    }
}

以上例項,執行輸出結果為:

4

迭代陣列列表

我們可以使用 for 來迭代陣列列表中的元素:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        for (int i = 0; i < sites.size(); i++) {
            System.out.println(sites.get(i));
        }
    }
}

以上例項,執行輸出結果為:

Google
itread01
Taobao
Weibo

也可以使用 for-each 來迭代元素:

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("itread01");
        sites.add("Taobao");
        sites.add("Weibo");
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

以上例項,執行輸出結果為:

Google
itread01
Taobao
Weibo

其他的引用型別

ArrayList 中的元素實際上是物件,在以上例項中,陣列列表元素都是字串 String 型別。

如果我們要儲存其他型別,而 <E> 只能為引用資料型別,這時我們就需要使用到基本型別的包裝類。

基本型別對應的包裝類表如下:

基本型別引用型別
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

此外,BigInteger、BigDecimal 用於高精度的運算,BigInteger 支援任意精度的整數,也是引用型別,但它們沒有相對應的基本型別。

ArrayList<Integer> li=new Arraylist<>();     // 存放整數元素
ArrayList<Character> li=new Arraylist<>();   // 存放字元元素

以下例項使用 ArrayList 儲存數字(使用 Integer 型別):

例項

import java.util.ArrayList;

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<Integer> myNumbers = new ArrayList<Integer>();
        myNumbers.add(10);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(25);
        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}

以上例項,執行輸出結果為:

10
15
20
25

ArrayList 排序

Collections 類也是一個非常有用的類,位於 java.util 包中,提供的 sort() 方法可以對字元或數字列表進行排序。

以下例項對字母進行排序:

例項

import java.util.ArrayList;
import java.util.Collections;  // 引入 Collections 類

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Taobao");
        sites.add("Wiki");
        sites.add("itread01");
        sites.add("Weibo");
        sites.add("Google");
        Collections.sort(sites);  // 字母排序
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

以上例項,執行輸出結果為:

Google
itread01
Taobao
Weibo
Wiki

以下例項對數字進行排序:

例項

import java.util.ArrayList;
import java.util.Collections;  // 引入 Collections 類

public class itread01Test {
    public static void main(String[] args) {
        ArrayList<Integer> myNumbers = new ArrayList<Integer>();
        myNumbers.add(33);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(34);
        myNumbers.add(8);
        myNumbers.add(12);

        Collections.sort(myNumbers);  // 數字排序

        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}

以上例項,執行輸出結果為:

8
12
15
20
33
34

Java ArrayList 方法

Java ArrayList 常用方法列表如下:

方法 描述
add() 將元素插入到指定位置的 arraylist 中
addAll() 新增集合中的所有元素到 arraylist 中
clear() 刪除 arraylist 中的所有元素
clone() 複製一份 arraylist
contains() 判斷元素是否在 arraylist
get() 通過索引值獲取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 刪除存在於指定集合中的 arraylist 裡的所有元素
remove() 刪除 arraylist 裡的單個元素
size() 返回 arraylist 裡元素數量
isEmpty() 判斷 arraylist 是否為空
subList() 擷取部分 arraylist 的元素
set() 替換 arraylist 中指定索引的元素
sort() 對 arraylist 元素進行排序
toArray() 將 arraylist 轉換為陣列
toString() 將 arraylist 轉換為字串
ensureCapacity() 設定指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最後一次出現的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 檢視 arraylist 是否包含指定集合中的所有元素
trimToSize() 將 arraylist 中的容量調整為陣列中的元素個數
removeRange() 刪除 arraylist 中指定索引之間存在的元素
replaceAll() 將給定的操作內容替換掉陣列中每一個元素
removeIf() 刪除所有滿足特定條件的 arraylist 元素
forEach() 遍歷 arraylist 中每一個元素並執行特定操作

更多 API 方法可以檢視:https://www.itread01.com/manual/jdk11api/java.base/java/util/ArrayList.html

Java 集合框架