2022年3月16日 星期三

android studio:List(Array、ArrayList、LinkedList )說明


List是所謂的陣列類別,是儲存資料的一種方式。在Android Studio中,只有介面,沒有實作,而若要實作,則要使用List下 ArrayList與Array及LinkedArray等類別。

一、ArrayList是一個List的子類別,可具體化,它與Array不同,它的大小可以改變,而因為裡面的元素很多,因此可以採用泛型的方式建立物件,不用先指定ArrayList()<>裡的元素類型,因為它是用Object[] elementData的方式運作,其中的元素必須是物件類型。

(一)新建ArrayList的方式如下:(1 2利用了ArrayList可泛型的特性,不給予元素類型)
1.以下四種方式皆可:
List arrayList= new ArrayList() //宣告arrayList為List類型的物件
ArrayList arrayList= new ArrayList(); //宣告arrayList為arrayList類型的物件
ArrayList<String> arrayList=new ArrayList<>(); //定義陣列的第一個值是String類型
ArrayList<String> arrayList=new ArrayList<String>(); //原兩邊都要寫類型,JAVA SE7後改成可省略。

2.原不可以加原始類型:
ArrayList<int> arrayList = new ArrayList<int>(); //這種寫法會報錯,因為int是原始型別
ArrayList<Integer> arrayList= new ArrayList<Integer>();  //可透過一些重新包裝的類別,進行宣告


(二)加入ArrayList陣列值的方法 .add("想加入的資料")
在此列表中的指定位置插入指定的元素。參數說明:index為要值入的位置,element為要插入的值,若沒有加入位置,則插入最後一個位置。

arrayList.add("1");
arrayList.add("2");
arrayList.add("3");


(三)取得ArrayList陣列值的方法 .get(int index);返回此列表中指定位置的元素。
arrayList.get(0); //取得陣列1的值
arrayList.get(1); //取得陣列2的值
arrayList.get(2); //取得陣列3的值


(四)計算陣列的長度 .size()
arrayList.size();

(五)查詢是否有某特定的值,有則回傳真,沒有為假 .contains() 
arrayList.contains(1);

(六)查詢某特定值位於那一個陣列中 indexOf()
arrayList.indexOf(1);


(七)刪除特定元素 .remove(1)
arrayList.remove(1);


(八)判斷是否為空 isEmpty()
arrayList.isEmpty();


(九)清除陣列所有資料 .clear()
arrayList.clear();

延伸連結:https://www.w3schools.com/java/java_arraylist.asp

二、Array陣列

Array是一個較為簡潔的List,它在宣告時要先給予大小,因為若你一開始就確定你陣列中要放幾個元素,就可以使用Array,裡面可以儲存原始類別及物件,
(一)新建的方法
String[]  array= new String[10]; //宣告一個類型為String的陣列,空間為11,0也算一個
int[]  array= new int[10]; //宣告一個類型為int的陣列,空間為11,0也算一個
int[]  array=new int[]{5,7,8}; // 新建一個int[]實體,並直接給賦值
int[]  array={5,7,8}; //直接給賦值


(二)加入陣列值的方法
可直接利用[陣列位置]將陣列的值加入
String[]  array= new String[2];
array[0]="第一個";
array[1]="第二個";

也可以在新建的時候直接加入
String array[] = new String[]{"第一個","第二個"};
int array2[] = new int[]{1,2};

(三)替換的方法,基本上透過[陣列位置]加上=來直接更換裡面的數值
array[0]="換的第一個";
array[1]="換的第二個";
(四) 搜尋數組中的某一個值的位置,找不到會回傳-1
Arrays.binarySearch(陣列,要搜尋的值);



延伸連結:https://www.w3schools.com/java/java_arrays.asp

三、Array和ArrayList兩個資料互換的方法
(1)arrayList轉成list,利用toArray方法,如下:
int size =list.size();
String[] array = list.toArray(new String[size]);  //轉換時要給予array空間大小,因此要先計算原來的ArrayList的空間大小。

(2)list轉成arrayList,利用asList方法,如下:
List<String> list=Arrays.asList(array); //arrayList不用管空間大小,因此利用asList方法將資料一個一個放進ArrayList就可以了。
 

四、LinkedList
LinkedList也是一個寫好的List類別,和ArrayList的差別在於,LinkedList裡儲存的陣列資料,可以排序,因此有一些需要排序才能運用的功能,使用LinkedList會比較方便,如指定新增最後一項資料,又如指定新增第一項資料等。

(一)新建LinkedList的方法如下:
不加陣列類型
LinkedList linkedList=new LinkedList();
加入陣列類型
LinkedList<String> linkedList2=new LinkedList<>();

(二)加入陣列的資料
linkedList.add("新增某一項"); //新增某一項
linkedList.addFirst("新增第一項"); //新增新一項
linkedList.addLast("新增最後一項"); //新增最後一項


(三)移除陣列的資料
linkedList.remove("某一項"); //移除某一項
linkedList.removeFirst(); //移除第一項
linkedList.removeLast(); //移除最後一項

(四)取得陣列資料
linkedList.get(0); //取得某一項
linkedList.getFirst(); //取得第一項
linkedList.getLast(); //取得最後一項

延伸連結:https://www.w3schools.com/java/java_linkedlist.asp

 














沒有留言:

張貼留言