ArrayList類是一個可以動態修改的數組,簡單來說可以想像成一個任意調整大小(格數)的表格, 沒有固定大小的限制,可以添加或刪除元素。
import java.util.ArrayList; // 引入ArrayList 類
ArrayList<E> objectName =new ArrayList<>(); // 初始化
E是引用數據類型
基本操作方式
- 添加元素-add
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
System.out.println(test);
}
}
執行結果:
[A, B, C, D]
批量增加,可以使用addAll,Collections.addAll(test,”A”,”B”,”C”,”D”);
- 訪問指定元素-get
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
System.out.println(test.get(2));
}
}
執行結果:
[ C ]
為什麼第2值不是B?因為索引值由由0開始算起。
- 修改元素-set
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
test.set(2, “CC”); //第一個參數為索引位置,第二個參數為修改的值。
System.out.println(test);
}
}
執行結果:
[ A, B, CC, D]
- 刪除元素-remove
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
test.remove(2); //刪除第3個元素。
System.out.println(test);
}
}
執行結果:
[ A, B, D]
刪除元素之後,原先第4個元素就會成為第3個,所以,如果再添加元素,元素會加在最後位置。
5.計算元素量-size
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
System.out.println(test.size());
}
}
執行結果:
[ 4 ]
其它操作方式:
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
for (int i=0 ; i<test.size; i++){ // 0-3 ,執行4次
System.out.println(test.get(i));
}
}
}
執行結果:
[ A, B, C, D ]
import java.util.ArrayList;
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“A”);
test.add(“B”);
test.add(“C”);
test.add(“D”);
for (String i:test) { // for each
System.out.println(i);
}
}
}
執行結果:
[ A, B, C, D ]
Collection 排序
import java.util.ArrayList;
import java.util.Collections; //引入collection類
public class Practice {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
test.add(“D”);
test.add(“B”);
test.add(“C”);
test.add(“A”);
test.add(“A”);
Collections.sort(test);
for (String i:test) { // 字母排序
System.out.println(i);
}
}
}
執行結果:
[ A, B, C, D ]
最大距陣練習,輸入20個值,顯示最大的值。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Practice {
public static void main(String[] args) throws Exception {
int[] array = initializeArray();
int max = max(array);
System.out.println(max);
}
分三部分進行,第一部分先建構這個練習的架構,宣告一個叫做array的陣列,放入一個叫做initializeArray()的method裡面。
第二部分宣告一個叫做max的int,將array的陣列放入一個叫做max的method裡面。
第三部分顯示max的結果。
public static int[] initializeArray() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int[] test = new int[20];
for (int i =0 ; i<20; i++){
test[i] = Integer.parseInt(reader.readLine());
}
return test;
}
initializeArray()method,宣告一個做test的21格容量的int陣列,for loop20次讀取輸入值,返回陣列test,陣列array放入陣列test的值。
public static int max(int[] array1) {
int max = array1[0] ;
for (int i=1; i<20 ; i++ ){
if (array1[i]>max){
max = array1[i];
}
}
return max;
}
}
最後是max method的寫法,陣列array放入去,max裡面是讀取陣列int[]的值,取名為array1,宣告int max為array1[0]的值,如果後面的值大於max,就會取代成為max,for loop19次,返回max的值。
*method裡面的陣列因為是局部變數,所以可以全部取名為array,只是為了清楚理解取值所以才改了三個名字。