在本教程中,我們將學(xué)習(xí)Java ArrayList類。我們將借助示例學(xué)習(xí)ArrayList不同的操作和方法。
ArrayList類是List接口的實(shí)現(xiàn),允許我們創(chuàng)建可調(diào)整大小的數(shù)組。
在Java中,我們需要先聲明數(shù)組的大小,然后才能使用它。一旦聲明了數(shù)組的大小,就很難更改它。
要解決此問(wèn)題,我們可以使用ArrayList類。 java.util包中存在的ArrayList類允許我們創(chuàng)建可調(diào)整大小的數(shù)組。
與數(shù)組不同,當(dāng)我們向數(shù)組列表添加或刪除元素時(shí),數(shù)組列表(ArrayList類的對(duì)象)可以自動(dòng)調(diào)整其容量。 因此,數(shù)組列表也稱為動(dòng)態(tài)數(shù)組。
這是我們可以在Java中創(chuàng)建數(shù)組列表的方法:
ArrayList<Type> arrayList= new ArrayList<>();
此處,Type指示數(shù)組列表的類型。例如,
//創(chuàng)建整數(shù)類型arraylist ArrayList<Integer> arrayList = new ArrayList<>(); //創(chuàng)建字符串類型arraylist ArrayList<String> arrayList = new ArrayList<>();
在上面的程序中,我們使用了Integer和String。 在這里,Integer是int類型的相應(yīng)包裝類。
包裝類是包裝原始數(shù)據(jù)類型的類。例如,Integer類包裝了int類型,F(xiàn)loat類包裝了Float類型,等等。
注意:我們不能創(chuàng)建原始數(shù)據(jù)類型(如int,float,char等)的數(shù)組列表。相反,我們必須使用它們對(duì)應(yīng)的包裝器類。
對(duì)于字符串,String是一個(gè)類,沒(méi)有包裝類。因此,我們按原樣使用String。
我們還可以使用List接口創(chuàng)建ArrayList。這是因?yàn)锳rrayList類實(shí)現(xiàn)了List接口。
List<String> list = new ArrayList<>();
ArrayList 提供了允許我們執(zhí)行數(shù)組列表操作的各種方法。
1.使用 add() 方法
要將單個(gè)元素添加到數(shù)組列表,我們使用add()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args){ ArrayList<String> animals = new ArrayList<>(); //添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayList: " + animals); } }
輸出結(jié)果
ArrayList: [Dog, Cat, Horse]
2.使用索引號(hào)
我們還可以使用索引將元素添加到數(shù)組列表中。例如,
import java.util.ArrayList; class Main { public static void main(String[] args){ ArrayList<String> animals = new ArrayList<>(); //添加元素 animals.add(0,"Dog"); animals.add(1,"Cat"); animals.add(2,"Horse"); System.out.println("ArrayList: " + animals); } }
輸出結(jié)果
ArrayList: [Dog, Cat, Horse]
3.將一個(gè)數(shù)組列表的元素添加到另一個(gè)數(shù)組列表
要將數(shù)組列表的所有元素添加到新的數(shù)組列表,請(qǐng)使用addAll()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args){ ArrayList<String> mammals = new ArrayList<>(); mammals.add("Dog"); mammals.add("Cat"); mammals.add("Horse"); System.out.println("Mammals: " + mammals); ArrayList<String> animals = new ArrayList<>(); animals.add("Crocodile"); // 添加mammals所有元素到animals animals.addAll(mammals); System.out.println("Animals: " + animals); } }
輸出結(jié)果
Mammals: [Dog, Cat, Horse] Animals: [Crocodile, Dog, Cat, Horse]
與數(shù)組不同,我們不能直接初始化數(shù)組列表。 但是,我們可以使用Arrays類的asList()方法來(lái)達(dá)到相同的效果。
為了使用asList()方法,我們必須先導(dǎo)入 java.util.Arrays 包。
例如,
import java.util.ArrayList; import java.util.Arrays; class Main { public static void main(String[] args) { //創(chuàng)建數(shù)組列表 ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog")); System.out.println("ArrayList: " + animals); //訪問(wèn)數(shù)組列表中的元素 String element = animals.get(1); System.out.println("訪問(wèn)元素: " + element); } }
輸出結(jié)果
ArrayList: [Cat, Cow, Dog] 訪問(wèn)元素: Cow
在上面的示例中,請(qǐng)注意以下表達(dá)式:
new ArrayList<>(Arrays.asList(("Cat", "Cow", "Dog"));
在這里,我們首先在3個(gè)元素的數(shù)組:"Cat","Cow",和"Dog"。然后,該asList()方法用于將數(shù)組轉(zhuǎn)換為數(shù)組列表。
1.使用get()方法
要隨機(jī)訪問(wèn)數(shù)組列表的元素,我們使用get()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals= new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); System.out.println("ArrayList: " + animals); //從數(shù)組列表中獲取元素 String str = animals.get(0); System.out.print("索引0處的元素: " + str); } }
輸出結(jié)果
ArrayList: [Dog, Horse, Cat] 索引0處的元素: Dog
2.使用 iterator() 方法
要按順序訪問(wèn)數(shù)組列表的元素,我們使用iterator()方法。我們必須導(dǎo)入 java.util.Iterator 包才能使用此方法。例如,
import java.util.ArrayList; import java.util.Iterator; class Main { public static void main(String[] args){ ArrayList<String> animals = new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); animals.add("Zebra"); //創(chuàng)建一個(gè)Iterator對(duì)象 Iterator<String> iterate = animals.iterator(); System.out.print("ArrayList: "); //使用Iterator的方法訪問(wèn)元素 while(iterate.hasNext()){ System.out.print(iterate.next()); System.out.print(", "); } } }
輸出結(jié)果
ArrayList: Dog, Cat, Horse, Zebra,
注意事項(xiàng):
hasNext() - 如果數(shù)組列表中有下一個(gè)元素,則返回true。
next() - 返回?cái)?shù)組列表中的下一個(gè)元素
要更改數(shù)組列表的元素,我們可以使用set()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals= new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayList: " + animals); //更改數(shù)組列表的元素 animals.set(2, "Zebra"); System.out.println("修改后的ArrayList: " + animals); } }
輸出結(jié)果
ArrayList: [Dog, Cat, Horse] 修改后的ArrayList: [Dog, Cat, Zebra]
1.使用 remove() 方法
要從數(shù)組列表中刪除元素,我們可以使用remove()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals = new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("初始ArrayList: " + animals); //從索引2中刪除元素 String str = animals.remove(2); System.out.println("最終ArrayList: " + animals); System. out.println("刪除元素: " + str); } }
輸出結(jié)果
初始ArrayList: [Dog, Cat, Horse] 最終ArrayList: [Dog, Cat] 刪除元素: Horse
2.使用 removeAll() 方法
要從數(shù)組列表中刪除所有元素,我們使用removeAll()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals = new ArrayList<>(); // 在ArrayList中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("初始ArrayList: " + animals); // 刪除所有元素 animals.removeAll(animals); System.out.println("最終ArrayList: " + animals); } }
輸出結(jié)果
初始ArrayList: [Dog, Cat, Horse] 最終ArrayList: []
3.使用 clear() 方法
我們還可以使用clear()方法從數(shù)組列表中刪除所有元素。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals= new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("Initial ArrayList: " + animals); //刪除所有元素 animals.clear(); System.out.println("Final ArrayList: " + animals); } }
輸出結(jié)果
初始ArrayList: [Dog, Cat, Horse] 最終ArrayList: []
注意:clear()方法比removeAll()方法更高效。
1.使用 for 循環(huán)
import java.util.ArrayList; class Main { public static void main(String[] args) { //創(chuàng)建數(shù)組列表 ArrayList<String> animals = new ArrayList<>(); animals.add("Cow"); animals.add("Cat"); animals.add("Dog"); System.out.println("ArrayList: " + animals); //使用for循環(huán) System.out.println("訪問(wèn)所有元素: "); for(int i = 0; i < animals.size(); i++) { System.out.print(animals.get(i)); System.out.print(", "); } } }
輸出結(jié)果
ArrayList: [Cow, Cat, Dog] 訪問(wèn)所有元素: Cow, Cat, Dog,
2.使用 forEach 循環(huán)
import java.util.ArrayList; class Main { public static void main(String[] args) { // 創(chuàng)建數(shù)組列表 ArrayList<String> animals = new ArrayList<>(); animals.add("Cow"); animals.add("Cat"); animals.add("Dog"); System.out.println("ArrayList: " + animals); //使用forEach循環(huán) System.out.println("訪問(wèn)所有元素: "); for(String animal : animals) { System.out.print(animal); System.out.print(", "); } } }
輸出結(jié)果
ArrayList: [Cow, Cat, Dog] 訪問(wèn)所有元素: Cow, Cat, Dog,
在兩個(gè)示例中,我們都使用循環(huán)訪問(wèn)了數(shù)組列表的各個(gè)元素。
要獲取數(shù)組列表的長(zhǎng)度,我們使用size()方法。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals= new ArrayList<>(); // 在arrayList中添加元素 animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); System.out.println("ArrayList: " + animals); //獲取arrayList的大小 System.out.println("arrayList的大小: " + animals.size()); } }
輸出結(jié)果
ArrayList: [Dog, Horse, Cat] arrayList的大小: 3
要對(duì)數(shù)組列表的元素進(jìn)行排序,我們使用Collections類的sort()方法。為了使用它,我們必須先導(dǎo)入java.util.Collections包。
默認(rèn)情況下,排序以字母或數(shù)字升序進(jìn)行。例如,
import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args){ ArrayList<String> animals= new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Horse"); animals.add("Zebra"); animals.add("Dog"); animals.add("Cat"); System.out.println("未排序的ArrayList: " + animals); //對(duì)數(shù)組列表進(jìn)行排序 Collections.sort(animals); System.out.println("排序后的ArrayList: " + animals); } }
輸出結(jié)果
未排序的ArrayList: [Horse, Zebra, Dog, Cat] 排序后的ArrayList: [Cat, Dog, Horse, Zebra]
要了解有關(guān)對(duì)數(shù)組列表進(jìn)行排序的更多信息,請(qǐng)?jiān)L問(wèn)Java ArrayList sort。
在Java中,我們可以使用toArray()方法將數(shù)組列表轉(zhuǎn)換為數(shù)組。例如,
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals= new ArrayList<>(); //在數(shù)組列表中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayList: " + animals); //創(chuàng)建一個(gè)新的String類型數(shù)組 String[] arr = new String[animals.size()]; //將ArrayList轉(zhuǎn)換成數(shù)組 animals.toArray(arr); System.out.print("Array: "); for(String item:arr) { System.out.print(item+", "); } } }
輸出結(jié)果
ArrayList: [Dog, Cat, Horse] Array: Dog, Cat, Horse,
我們還可以將數(shù)組轉(zhuǎn)換為數(shù)組列表。為此,我們可以使用Arrays類的asList()方法。
要使用asList(),我們必須先導(dǎo)入java.util.Arrays包。例如,
import java.util.ArrayList; import java.util.Arrays; class Main { public static void main(String[] args) { //創(chuàng)建一個(gè)字符串類型的數(shù)組 String[] arr = {"Dog", "Cat", "Horse"}; System.out.print("Array: "); //打印數(shù)組 for(String str: arr) { System.out.print(str); System.out.print(" "); } //從數(shù)組創(chuàng)建ArrayList ArrayList<String> animals = new ArrayList<>(Arrays.asList(arr)); System.out.println("\nArrayList: " + animals); } }
輸出結(jié)果
Array: Dog, Cat, Horse ArrayList: [Dog, Cat, Horse]
在上面的程序中,我們首先創(chuàng)建了String類型的數(shù)組arr。
然后,我們使用asList()方法將數(shù)組轉(zhuǎn)換為數(shù)組列表。
要將數(shù)組列表轉(zhuǎn)換為字符串,可以使用toString()方法。例如
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> animals = new ArrayList<>(); //在ArrayList中添加元素 animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayList: " + animals); //將ArrayList轉(zhuǎn)換為字符串 String str = animals.toString(); System.out.println("String: " + str); } }
輸出結(jié)果
ArrayList: [Dog, Cat, Horse] String: [Dog, Cat, Horse]
注意: toString()將整個(gè)數(shù)組列表轉(zhuǎn)換為單個(gè)String。
方法 | 內(nèi)容描述 |
---|---|
clone() | 創(chuàng)建具有相同元素、大小和容量的新數(shù)組列表。 |
contains() | 在數(shù)組列表中搜索指定的元素并返回一個(gè)布爾值。 |
ensureCapacity() | 指定數(shù)組列表可以包含的總元素。 |
isEmpty() | 檢查數(shù)組列表是否為空。 |
indexOf() | 在數(shù)組列表中搜索指定的元素,并返回該元素的索引。 |
trimToSize() | 將數(shù)組列表的容量減少到當(dāng)前大小。 |