Java大用處——動態陣列的實現
阿新 • • 發佈:2019-01-10
陣列大家平常都用,陣列雖然有優點但是最讓我不爽的就是它的定長。
有人會說,那就用連結串列啊,連結串列插入,刪除是方便,但是遍歷速度慢。
所以,我就想寫一個動態的陣列。
原理是這樣的,當你想增加陣列大小時,我們就另外開一個你想要的陣列,把以前的那個陣列放入其中即可。
具體程式碼實現:
程式結果:package com.newer.tw.com; /** * 自定義長度可變陣列 * * @author Administrator * */ public class MyList { // 定義一個初始長度為0的陣列,用來快取資料 private String[] src = new String[0]; // 增加 public void add(String s) { //定義新陣列,長度是原陣列長度+1 String[] dest = new String[src.length+1]; //將原陣列的資料拷貝到新陣列 System.arraycopy(src, 0, dest, 0, src.length); //將新元素放到dest陣列的末尾 dest[src.length]=s; //將src指向dest src=dest; } // 修改指定位置的元素 public void modify(int index, String s) { src[index]=s; } // 刪除指定位置的元素 public void delete(int index) { String[] dest = new String[src.length-1]; //將原陣列的資料拷貝到新陣列 System.arraycopy(src, 0, dest, 0, index); System.arraycopy(src, index+1, dest, index, src.length-1-index); src=dest; } // 獲得指定位置的元素 public String get(int index) { return src[index]; } // 在指定位置插入指定元素 public void insert(int index, String s) { //定義新陣列,長度是原陣列長度+1 String[] dest = new String[src.length+1]; //將原陣列的資料拷貝到新陣列 System.arraycopy(src, 0, dest, 0, index); dest[index]=s; System.arraycopy(src, index, dest, index+1, src.length-index); src=dest; } // 獲得元素個數 public int size() { return src.length; } public void print() { for(int i=0;i<size();i++) System.out.println(src[i]); } public static void main(String[] args) { MyList m=new MyList(); m.add("15"); m.add("16"); m.add("17"); m.add("18"); m.add("19"); System.out.println("插入之前:"); m.print(); m.insert(2,"22"); System.out.println("插入之後:"); m.print(); } }
插入之前:
15
16
17
18
19
插入之後:
15
16
22
17
18
19
就不一一測試了。
以上就是實現了一個動態陣列的功能,其實C語言可以實現,下次寫一個。
Java,C++中,提供了容器,就不用自己寫這些了。