java自己實現一個數組【親測】
阿新 • • 發佈:2019-01-05
自己實現一個數組,詳情看程式碼
-
陣列類
public class MyArray { private long arr[]; /** * actualsubSize實際下標大小,預設為0 */ private int actualsubSize; /** * flag用來標記操作是否成功 */ private boolean flag=false; public MyArray(){ arr=new long[50]; } public MyArray(int length){ arr=new long[length]; } /** * 1.新增陣列元素 */ public void add(long value){ arr[actualsubSize]=value; actualsubSize++; } /** * 2.顯示資料元素例如{1,2,3...} */ public void display(){ System.out.print("{"); for(int i=0;i<actualsubSize;i++){ if(i!=actualsubSize-1) System.out.print(arr[i]+","); else System.out.print(arr[i]+"}\n"); } } /** * 3.根據下標查詢資料,返回資料,越界報錯 */ public long displayDataByIndex(int index){ if(index<0 || index>actualsubSize-1){ throw new ArrayIndexOutOfBoundsException(); }else return arr[index]; } /** * 4.根據資料查下標,返回下標位置,沒找到返回-1 */ public int displayIndexByData(long value){ int i; for(i=0;i<actualsubSize;i++){ if(value==arr[i]) { break; } } if (i==actualsubSize) i=-1; return i; } /** * 5.刪除陣列中某一位置的元素(通過下標),刪除成功返回true,失敗返回false,越界報錯 */ public boolean delete(int index){ if (index<0 || index>actualsubSize){ throw new ArrayIndexOutOfBoundsException(); }else { for(int i=index;i<actualsubSize;i++){ arr[i]=arr[i+1]; } flag=true; actualsubSize-=1; return flag; } } /** * 6.根據元素值刪除陣列中的元素,若無該值則失敗,返回false,否則刪除成功返回true, */ public boolean deleteByData(long value){ int index=this.displayIndexByData(value); if (index!=-1){ this.delete(this.displayIndexByData(value)); flag=true; }else { flag=false; } return flag; } /** * 7.更新陣列中元素的值(根據下標),成功返回true,失敗返回false,越界報錯 */ public boolean update(int index,long value){ if(index<0 || index>actualsubSize){ throw new ArrayIndexOutOfBoundsException(); }else { arr[index]=value; flag=true; } return flag; } }
-
測試類
public class test { public static void main(String[] args) { MyArray arr=new MyArray(); arr.add(0); arr.add(10); arr.add(20); arr.add(30); arr.display(); System.out.println(arr.displayDataByIndex(3)); System.out.println(arr.displayIndexByData(30)); System.out.println(arr.delete(0)); arr.display(); System.out.println(arr.update(0,100)); arr.display(); System.out.println(arr.deleteByData(100)); arr.display(); } }