動態陣列 ArrayList
ArrayList是一個類似於陣列的集合物件,可以用來存放一至多個元素,有下列幾項重點:
- ArrayList是Collection的子介面List的實作類別
- Arraylist可以動態增刪陣列內元素資料,而Array的內容大小宣告完後就固定不變,且元素資料型態必須都要一致
- List是具有順序性,且提供許多操作元素的方法,如下
1.建立 ArrayList
List a = new ArrayList();
ArrayList b = new ArrayList();
List<string> c = new ArrayList(); //指定泛型,限定陣列只能是String物件型態
2.加入元素 add(object o)
要特別注意index是從0開始,且如果有指定泛型的資料型態,放入其他資料型態的資料就會出現compilation error
List<string> a = new ArrayList();
a.add("A"); //依序在動態陣列存放"A"、"B"、"C"、10
a.add("B");
a.add("C");
a.add(10); //其實動態陣列只能存放物件,但int為基本資料型態,所以標準寫法是a.add(new Integer(10));但是JAVA提供簡化寫法,如a.add(10),JAVA會自動轉換為int物件)
3.陣列輸出
可以使用for-each迴圈來一個一個輸出,或是利用Lambda的foreach來輸出
for(String a : list){ System.out.println(s); } list.forEach(a -> System.out.println(a)); // list.forEach(new Consumer<String>() { // @Override // public void accept(String s) { // System.out.println(s); // } // });
4.陣列大小 size()
size() 會回傳目前動態陣列裡面的元素個數總和
System.out.println( "size= "+ a.size() ); //size()輸出是int型態數字,現在內容有4個資料,所以返回是4
5.查詢特定元素是否在陣列 contains(object o)
contains("test") 會回傳布林值true/false,只要contains方法參數的元素有存在動態陣列裡面,就會回傳true,反之亦然
System.out.println(a.contains("AB")); // 元素存在於集合內就回傳true,反之則false
6.判斷陣列是否為空 isEmpty()
isEmpty(),會回傳一布林值,如為動態陣列為空即回傳true,反之亦然
System.out.println("是否為空" + a.isEmpty()); // 集合元素為空就回傳true,反之則false
7.修改資料 set(int index, object o)
set(0,"kevin"),第一個參數為索引值,索引值是從0開始算,而第二個參數就是要修改的物件
// 假設現在動態陣列a的集合元素是這樣 -> [a,b,c,d,e]
a.set(0, "KEVIN");
System.out.println(a);//陣列現在內容是[KEVIN,b,c,d,e]
8.取得資料 get(int index)
get(3),表示取出索引位置為3的物件,如果沒有使用泛型(Generic)指定要存放的資料型態的話,就要盡量使用資料型態為Object的變數來接get()回傳的值
// 假設現在動態陣列a的集合元素是這樣 -> [a,b,c,d,e]
// Object 是萬用型別,而儲存在ArrayList裡的資料也都是Object物件資料
Object obj = a.get(3);//根據索引位置取得資料,要記得陣列起頭是從0開始,所以就會取得所引為3的元素就是'd'
System.out.println("obj=+"obj);//obj = d
9.查詢索引位置 indexOf(Object o)
indexOf("b") ,只有一個參數,這參數是一個物件,如果這一個物件在動態陣列裡面的話,就會回傳一個型態為int的那個物件的索引位置,如果不在裡面的話就會回傳一個-1
// 假設現在動態陣列a的集合元素是這樣 -> [a,b,c,d,e]
int index = a.indexOf("b"); //只要有在動態陣列裡就傳回索引位置,如果沒有在陣列裡就傳回-1
System.out.println(index);//剛剛找的b在1,所以會印出1
10.刪除資料 remove(Object o) or remove(int index)
刪除元素有兩種方式,差別在於回傳值不同,
- remove("str") 回傳一個布林值,true表示成功刪除,反之亦然
- remove(0) 回傳索引位置是0的物件
看程式本身需求是什麼,在去判斷要使用哪一個吧~
// 假設現在動態陣列a的集合元素是這樣 -> [a,b,c,d,e]
obj = a.remove(0); //意思是取出(刪除)第0項物件資料提出來放在obj變數,並把陣列裡的第0項刪除
System.out.println(obj);//可以列出剛提出的object 就是 a
boolean isOk;
isOk = a.remove("b");//換成在參數內換物件資料,意思是從陣列移除"b",並傳回一個布林值
System.out.println("是否成功刪除:"+isOk);//成功刪除顯示true,反之則false
System.out.println(a);//陣列現在變成 [c,d,e]
留言列表