ArrayList類是一個可以動態修改的數組,簡單來說可以想像成一個任意調整大小(格數)的表格, 沒有固定大小的限制,可以添加或刪除元素。

import java.util.ArrayList; // 引入ArrayList 類
ArrayList<E> objectName =new ArrayList<>();  // 初始化
E是引用數據類型

基本操作方式

  1. 添加元素-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”);

  1. 訪問指定元素-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開始算起。

  1. 修改元素-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]

  1. 刪除元素-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,只是為了清楚理解取值所以才改了三個名字。