iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

轉職仔自學Java筆記本系列 第 9

Java 的陣列 (Array) 與動態陣列 (ArrayList)

  • 分享至 

  • xImage
  •  

Array 陣列

Java 中的 Array 可以用來儲存同個類別的資料,且 Array 建立後便無法改變長度,如果想在 Array 中增加元素,會需要創一個全新的 Array。

宣告一個 Array 的方法是先寫 Array 中元素的資料類別,再加上中括弧 [ ],指派的元素則是要裝在大括弧 { }

//Example: String[ ] 儲存多個 string 的 Array
String[] animal = {"dog", "cat", "fish", "bird"};

創建 Array 時也可以先不指派值,但必須給予長度且不得變動。

String[] human = new String[5]; // 指定可以存放 5 個元素

Array 支援直接使用 [ index ] 存取與修改元素,但無法操作超出長度的元素。


// 讀取元素 array[index]
System.out.println(animal[0]);
//Out: dog

// 修改元素 
animal[0] = "elephant";
System.out.println(animal[0]);
//Out: elephant


Arraylist 動態陣列

ArrayList 是一個可以調整大小的 Array,沒有固定大小的限制,使用時以 ArrayList<datatype> 宣告新的 ArrayList。


// datatype 為 array 裡的元素
ArrayList<String> names = new ArrayList<String>();

如果要以 Primitive Data Types 作為 ArrayList 的元素,需要使用 Wrapper Class ,像是 ArrayList<Integer> 而不能用 int。

ArrayList<Integer> grades = new ArrayList<Integer>();

ArrayList 新增元素 add()

ArrayList 新增元素使用 add(element) 即可在 ArrayList 尾端添加元素。但 ArrayList 為有序集合,如果有在指定位置添加元素,一樣可以利用 add() 並指定添加位置的索引,如 add(index, element) 即可添加元素於指定位置。

ArrayList<String> names = new ArrayList<String>();

// 新增元素 add(element)於尾端
names.add("Jake");
names.add("Bob");
System.out.println(names);
// Out: [Jake, Bob]

// 新增元素 add(index, element) 於指定位置
names.add(1, "Gary");
System.out.println(names);
// Out: [Jake, Gary, Bob]

ArrayList 訪問元素 get()

ArrayList 並不支援以 [ ] 訪問元素 ,需要調用 get(index) 取得指定索引的元素。

// 讀取元素 get(index)
System.out.println(names.get(1));
// Out: Gary

ArrayList 修改元素 set()

ArrayList可以以 set(index, element) 修改指定位置的元素。


// 修改元素 set(index, element)
// 不得用來增加 ArrayList 的長度

names.set(2, "Leo");
System.out.println(names);
// Out: [Jake, Gary, Leo]

ArrayList 刪除元素 remove()

ArrayList 以 remove(index) 刪除指定位置的元素。


// 刪除元素 remove(index)
names.remove(0);
System.out.println(names);
// Out: [Gary, Leo]


上一篇
Java 的 String 與 StringBuffer
下一篇
Java的雜湊表 (HashMap)
系列文
轉職仔自學Java筆記本22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言