Java 中的 ArrayList:初學者入門 [2022]

已發表: 2022-11-22

數組是每種編程語言中廣泛使用且必不可少的數據結構,但有一個缺點——它的大小是固定的。 讓我們看看 Java 中的 ArrayList 如何幫助解決這個問題。

數組可以有兩種類型:靜態數組或動態數組。 在 Java 等編程語言中,數組不能動態增加。 相反,數組的大小是在數組初始化期間聲明的。 但是,在許多情況下,這會導致許多問題。 為了解決這個問題,Java 中使用了 ArrayLists。 當元素被推送到 ArrayList 時,數組大小會自動增加。

在本文中,您將了解 Java 中的 ArrayLists。 您將了解 Array 和 ArrayList 之間的核心區別,並了解不同類型的 ArrayList 以及如何使用它們。

數組與 ArrayList

Array 和 ArrayList 之間的主要區別在於 Array 的大小是靜態的,而 ArrayList 的大小可以是動態的。 由於數組是固定的,因此遍歷數組的時間比動態數組少。

它們之間還有一些差異。

  • 靜態數組可以是一維或多維的,但 ArrayList 只能是一維的。
  • 數組是 Java 中可用的原始數據結構。 但是 ArrayList 是 Java 中集合框架 API 的一部分。 它建立在數組之上。
  • 您可以聲明具有原始數據類型的數組。 不能在 ArrayList 中使用原始數據類型。 如果要使用原始數據類型,則需要使用該數據類型對應的包裝類。

Java 中 ArrayList 的類型

ArrayLists 可以是任何類型。 但是您需要傳遞相應的包裝器類,因為您不能在 ArrayList 中傳遞原始數據類型。

您可以通過傳遞包裝類(如IntegerString )來添加簡單的數據類型,如整數或字符串類型。

您還可以傳入複雜類型,如 ArrayLists 的 ArrayLists、hashmaps 等。

讓我們看一下在 ArrayList 中使用自定義類的示例。

 import java.util.ArrayList; class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void getUser() { System.out.println("Name: " + name + " Age: " + age); } } class Main { public static void main(String[] args) { ArrayList<User> users = new ArrayList<>(); users.add(new User("Subha", 25)); users.add(new User("Dan", 32)); users.forEach(user -> { user.getUser(); }); } } Output: Name: Subha Age: 25 Name: Dan Age: 32

在上面的代碼示例中,創建了一個User類型的 ArrayList。 您將了解有關以下示例中使用的方法的更多信息。

在 Java 中創建一個 ArrayList

您已經了解了 Java 中 ArrayList 的基礎知識。 現在讓我們看一下 ArrayList 的語法,然後,我們還將了解如何在 Java 代碼中使用它。

 ArrayList<Type> listName = new ArrayList<>();

上面的代碼片段顯示了定義 ArrayList 的語法。 Type定義了 ArrayList 的類型。 例如,如果你想聲明一個整數數據類型的 ArrayList,你可以傳入<Integer> 。 請注意,您不能傳遞int ,因為它是原始數據類型。

您還需要導入java.util.ArrayList以在您的程序中使用 ArrayList。 下面是聲明 ArrayList 的程序的基本示例:

 import java.util.ArrayList; class Main { public static void main(String[] args) { // Declare An ArrayList ArrayList<String> rainbow = new ArrayList<>(); System.out.println(rainbow); } } Output: []

在上面的代碼中,聲明了一個名為rainbowString類型的 ArrayList。

要使用 ArrayList,有多種方法可用。 讓我們來看看幾種方法。

add方法

ArrayList 類提供了各種方法來執行操作,例如添加或刪除元素、獲取值、在特定位置設置值、清除 ArrayList 等。

我們將看到的第一個方法是add方法。

add方法用於將單個項目添加到ArrayListadd的語法如下所示。

 arrayList.add(int i, Element)

現在讓我們了解語法。 第一個參數i是一個可選參數,表示要添加的項目所在的索引位置。 第二個參數Element是你要添加的元素。 現在讓我們來看一個例子。

 rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet]

rainbow.add("Violet")將一個元素添加到 ArrayList 的末尾。 並且rainbow.add(0, "Red")將元素Red添加到 ArrayList 的索引位置0add()方法在成功插入項目時返回true

get方法

get方法用於從 ArrayList 的指定位置獲取值。

 arrayList.get(int i);

上面語法中顯示的i是索引位置。 例如,如果你想從索引位置1獲取項目,寫arrayList.get(1)

 rainbow.add("Violet"); rainbow.add(0, "Red"); String color = rainbow.get(1); System.out.println(color); Output: Violet

上面的代碼將從 ArrayList rainbow返回Violet

set方法

set方法用於替換項目的值。 例如,如果您想要替換索引位置0處的項目的值,您可以編寫rainbow.set(0, "Purple") ,假設您有一個名為rainbow的 ArrayList。

set方法的語法如下,

 arrayList.set(int i, Element);

其中i是索引位置, Element是新元素的值。

 rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet] rainbow.set(1, "Purple"); System.out.println(rainbow); Output: [Red, Purple]

在上面的示例中,我們將兩個值添加到名為rainbow的 ArrayList 中。 首先,添加元素Violet ,然後在 ArrayList 的位置0處添加項Red 。 此時,完整的 ArrayList 看起來像這樣[Red, Violet]

現在,使用set方法將索引位置1處的元素替換為值Purple 。 替換值後,ArrayList 將如下所示[Red, Purple]

remove方法

ArrayList remove方法用於從 ArrayList 中刪除一個值。 您可以傳遞值或要刪除的值的索引位置。 remove方法的語法如下所示:

 arrayList.remove(Object value); // or arrayList.remove(int i);

讓我們舉個例子來更好地理解該方法。 假設您有一個名為rainbow的 ArrayList,其值為[Violet, Red, Green] 。 現在,如果你想從 ArrayList 中移除Red ,你可以寫rainbow.remove("Red"); . 在rainbow ArrayList 上調用此方法將從中刪除元素Red

 // rainbow = [Violet, Red, Green] rainbow.remove("Red"); System.out.println(rainbow); Output: [Violet, Green]

您還可以傳遞索引位置以刪除索引位置的項目。

 //rainbow = [Red, Green] rainbow.remove(0); // Remove item at index position 0 System.out.println(rainbow); Output: [Green]

clear的方法

顧名思義, clear方法從 ArrayList 中刪除所有元素。 語法很簡單,並且不帶任何參數。

 arraylist.clear()

讓我們看一個例子,

 rainbow.clear(); System.out.println(rainbow); Output: []

clear方法不返回任何值。 相反,它會清除給定 ArrayList 的值。

size方法

size方法返回給定 ArrayList 的大小。 此方法也不採用任何參數。 語法如下所示。

 arrayList.size();

這裡的arrayList就是ArrayList的名字。 讓我們藉助一個例子來理解size方法。

 ArrayList<String> rainbow = new ArrayList<>(); rainbow.add("Violet"); rainbow.add("Red"); rainbow.add("Green"); System.out.println(rainbow.size()); Output: 3

此方法返回 ArrayList 大小的值。 在上面的示例中,ArrayList rainbow由三個值組成,因此size方法返回 3。

結論

本文討論了什麼是 ArrayList 以及它與 Array 的區別。 我們還看到瞭如何使用 ArrayList 類可用的各種方法來聲明和使用 ArrayList。

如果您想更深入地學習 Java,請查看這些在線 Java 課程。