iT邦幫忙

1

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 types
        int[] 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<>(); 
    } 
}

尚未有邦友留言

立即登入留言