Java - Array 與 ArrayList 的分別
閱讀時間: 10分鐘
兩者都是常用來創建array的方法,
雖然目的相同,但本質上卻有很大差異。
本質上,
Array是Java中的基本功能。
而ArrayList就是Collection Framework的一部分。
因此就有著完全不同的使用方式!
創建方式不同
Array
是一個有固定大小的Array。
每次創建一個新的Array時,都需要為它設定一個大小。
而且在創建後,是不能再更改大小。
int arr[] = new int[10]
ArrayList
是一個有浮動大小的Array。
每次創建一個新的Array時,不需要為它設定大小。
因為在創建後,你可以隨意更改它的大小。
另外,它是List interface的實作。
ArrayList arrL = new ArrayList();
新增元素及存取元素的方式不同
Array透過[]的方式新增元素而ArrayList就透過add()。
Array透過[]的方式存取元素而ArrayList就透過get()。
import java.util.ArrayList; import java.util.Arrays; class ArrayTest { public static void main(String args[]) { /* Array */int[] arr = new int[2]; // 新增元素到Array arr[0] = 1; arr[1] = 2; // 存取元素 System.out.println(arr[0]); /*ArrayList*/ ArrayList<Integer> arrL = new ArrayList<Integer>(2); // 新增元素到ArrayList arrL.add(1); arrL.add(2); // 存取元素 System.out.println(arrL.get(0)); } }
資料結構(Data type)的類別不同
Array 可以包含primitive data types 和object entities。
ArrayList 只可以包含object entries 但不支持primitive data types。
import java.util.ArrayList; import java.util.Arrays; class ArrayTest { public static void main(String args[]) { // 允許primitive data typesint[] array = new int[3]; // 允許 object entities Test[] array1 = new Test[3]; // 不允許primitive data types // 當運行以下一句的code時,會出現error ArrayList<char> arrL = new ArrayList<char>(); // 允許 object entities ArrayList<Integer> arrL1 = new ArrayList<>(); ArrayList<String> arrL2 = new ArrayList<>(); ArrayList<Object> arrL3 = new ArrayList<>(); } }