Java自定義陣列列表的實現操作
阿新 • • 發佈:2020-09-14
主要目的:
解決ArrayList 類不能改變大小的問題,主要實現陣列列表動態調整大小。
1、陣列型別如何選擇?由於我們不清楚陣列中具體存入什麼型別的資料, 我們可以宣告一個物件Object [ ] ,這樣,陣列列表就可以儲存任何型別的資料了。
2、泛型<> :如果定義的一個類或介面有一個或多個型別變數,則可以使用泛型。
ArrayList<String>本身就是泛型,各種型別的變數都可以組裝成對應的List,而不必針對每個型別分別實現一個構建ArrayList的類。
泛型字母所代表含義:
E表示集合的元素型別,
K 和 V分別表示表的關鍵字與值的型別 *
T(需要時還可以用臨近的字母 U 和 S)表示“任意型別”
3、實現功能:我們主要實現arraylist的基本的增,刪,改,等功能。
核心思路:主要根據所需求大小進行調整,需要建立一個新的陣列,將老陣列值賦予新陣列再進行詳細的變動。
package com.customArray0905; public class CustomArraryList<E> { Object[] data; int Size; public int getSize() { return Size; } //返回陣列下標為index的元素的值 public E get(int index) { if(index<0 || index>=Size) { throw new IndexOutOfBoundsException(); //否則return null } return (E) data[index]; } //自定義更改下標為index的元素值的方法 public void set(int index,E e) { if(index<0 || index>=Size) { throw new IndexOutOfBoundsException(); //否則return null } data[index] = e; } public void add(E e) { ///建立新物件 容量擴大一個 Object[] newdata = new Object[Size + 1]; //將array中的元素重新存入更新容量後的newArray陣列中去 for (int i = 0; i < Size; i++) { newdata[i] = data[i]; } data = newdata; data[Size++] = e; } //自定義移除下標為index的元素的方法 public void remove(int index) { ///建立新物件 容量減少一個 Object[] newdata = new Object[Size - 1]; int j = 0; //判斷index大小是否合適存在陣列中 if(index<0 || index>=Size) { throw new IndexOutOfBoundsException(); //否則return null } //得到老物件裡下標之前的所有元素並存入新物件 for (int i = 0; i < index; i++) { newdata[j] = data[i]; j++; } //得到老物件裡下標之後的所有元素並存入新物件 for (int i = index + 1; i < Size; i++) { newdata[j] = data[i]; j++; } data = newdata; Size--; } //清除array中所有的元素 public void clear() { for(int i = 0;i<Size;i++) { data[i] = null; } Size = 0; } public static void main(String[] args) { CustomArraryList<String> myList = new CustomArraryList<>(); //Add System.out.println("測試1,ADD方法"); myList.add("1"); myList.add("2"); myList.add("3"); myList.add("4"); myList.add("5"); for (int i = 0; i < myList.getSize(); i++) { System.out.println(myList.get(i)); } //Remove,Set myList.remove(2); myList.set(3,"7"); System.out.println("測試2,移除index=2的資料,並設定index=3的資料值為7,"); for (int i = 0; i < myList.getSize(); i++) { System.out.println(myList.get(i)); } //Clear myList.clear(); myList.add("1"); for (int i = 0; i < myList.getSize(); i++) { System.out.println("測試3,clear方法,僅剩下新新增資料 "+myList.get(i)); } //丟擲錯誤 System.out.println("測試4,丟擲set錯誤"); myList.set(2,"2"); } }
測試結果:
補充知識:java Arrays快速列印陣列的資料元素列表
1、Arrays.toString
用來快速列印一維陣列的資料元素列表
2、Arrays.deepToString 快速列印一個二維陣列的資料元素列表
public static strictfp void main(String[] args) { String[][] arr = {{"aaa","bbb"},{"ccc"}}; for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.println(arr[x][y]); } } //Arrays.deepToString 快速列印一個二維陣列的資料元素列表 System.out.println(Arrays.deepToString(arr)); }
以上這篇Java自定義陣列列表的實現操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。