Java - Array 與 ArrayList 的分別

MartinYeung
·
·
IPFS
·

閱讀時間: 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<>(); 
    } 
}


CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

MartinYeungLove life Love IT IT blog: https://ithelp.ithome.com.tw/users/20119569
  • 来自作者
  • 相关推荐

Java - Volatile keyword的介紹

Java - Atomic VS Volatile

Java - Thread-Safety是什麼 - Part 3