HOWTO · Java
如何在 Java 中回傳 ArrayList
在本教學中,我們將從 Java 的函數回傳一個 ArrayList。
本頁內容
ArrayList 是 Java 的 java.util 套件中可調整大小的集合。若要回傳一個 ArrayList,請宣告 ArrayList 回傳型別,建立並填入集合,然後用 return 將其回傳。在 Java 中,在類別中宣告的函數稱為方法。當操作使用物件的狀態時,選擇實例方法;當呼叫方應直接使用類別時,選擇靜態方法。如果呼叫方只需要一般的清單操作,方法可以將 List<T> 介面宣告為其回傳型別,同時回傳一個 ArrayList<T> 物件。
在 Java 中從非靜態函數回傳 ArrayList
非靜態方法屬於其類別的一個實例。呼叫方先建構該類別,然後在產生的物件上呼叫該方法。在此範例中,ClassB 建立一個整數清單,Main 在宣告為 List<Integer> 的變數中接收回傳的集合。當呼叫方只需要清單操作時,List 介面是一個有用的變數型別,而方法可以宣告具體的 ArrayList<Integer> 型別。
完整的程式使用一個公開類別,並將 ClassB 巢狀置於其中,因此範例可以儲存為單一 Java 原始檔並編譯。main 方法是呼叫方:它建立 ClassB,透過 m1 呼叫 myNumbers(),並印出回傳的值。
import java.util.ArrayList;
import java.util.List;
public class Main {
static class ClassB {
public ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(30);
return numbers;
}
}
public static void main(String[] args) {
ClassB m1 = new ClassB();
List<Integer> listInMain = m1.myNumbers();
System.out.println("The List is " + listInMain);
}
}
The List is [10, 15, 30]
泛型型別 Integer 描述集合所持有的元素。該方法在每次呼叫時建立一個新清單,加入三個數字,並回傳該清單。呼叫方可以讀取、迭代或向回傳的集合加入值。該方法回傳對清單的參照;它不會將集合轉換為陣列。由於呼叫方接收的是同一個物件,透過回傳的參照所做的變更會影響該方法所建立的清單。
在 Java 中從靜態函數回傳 ArrayList
靜態方法屬於類別,而不屬於某個特定物件。使用類別名稱和方法名稱來呼叫它,因此這個版本不會建構 ClassB。當方法的工作不依賴儲存在特定實例上的欄位時,這很有用。其主體仍然以與實例方法相同的方式建立並回傳 ArrayList。
這個獨立程式使用相同的資料,讓您可以專注於呼叫形式。由於該方法宣告為 static,Main 以 ClassB.myNumbers() 的形式呼叫它。回傳值被指派給一個 List<Integer> 變數,並由呼叫方印出。
import java.util.ArrayList;
import java.util.List;
public class Main {
static class ClassB {
public static ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(30);
return numbers;
}
}
public static void main(String[] args) {
List<Integer> listInMain = ClassB.myNumbers();
System.out.println("The List is " + listInMain);
}
}
The List is [10, 15, 30]
當操作需要物件的狀態時,使用實例方法;當操作屬於類別層級且不需要實例時,使用靜態方法。在任一情況下,請使宣告的回傳型別與值相容,並在呼叫處將結果指派給相容的型別。return 陳述式結束方法,並將已填入的清單交給呼叫方,呼叫方可以使用一般的 List 操作。