1. 程式人生 > >如何自定義一個長度可變數組

如何自定義一個長度可變數組

方式 urn img 數組長度 字符串數組 個數 很多 由於 lac

摘要:本文主要寫了如何自定義一個長度可變數組

數組是在程序設計中,為了處理方便,把具有相同類型的若幹元素按無序的形式組織起來的一種形式

在定義之初,數組的長度就被定義

新建數組有很多方式 下面兩個都可以 但一般書寫習慣會選擇第一種

1 String[] array = new String[5]; //新建一個長度為5的字符串數組
1 String array[] = new String[5];  // 新建一個長度為5的字符串數組

由於數組的長度一旦初始化就無法改變,所以我們需要另辟思路

技術分享圖片

假如我有一個只能裝5個雞蛋的籃子

現在我想多放入一個雞蛋 但籃子放不下 怎麽辦!!

用傳說中的四步法就可以解決這個問題啦

1.找一個能放下6個雞蛋的容器!

2.將五個雞蛋放入後來的容器!

3.將拿來的第六個雞蛋也放入容器!

4.將之前的“籃子”標簽撕下,貼在新容器上!

此時,我就有了一個能裝6只雞蛋的籃子!是不是很簡單呢

數組也是這樣的

技術分享圖片

將籃子看做為一個長度為5的數組 其元素有 1 ,2 ,3 ,4 ,5

此時有一個元素 6 需要加入

則先新建一個長度為6的數組

技術分享圖片

然後將原來數組中的元素依次放入新建的數組

技術分享圖片

然後將元素 6 也放入其中

技術分享圖片

然後將原來的籃子標簽撕下 給新的數組

將原數組的地址指向新數組

技術分享圖片

想必看到這裏 ,思路應該沒有問題了

代碼實現如下:

 1 public class MyArray {
2 //定義一個初始長度為0的數組,用來緩存數據 3 private String[] src = new String[0]; 4 /** 5 * 保存數據的方法 6 * @param s 要保存的元素 7 */ 8 public void add(String s) { 9 //定義一個新數組,長度是原數組的長度+1 10 String[] dest = new String[src.length+1]; 11 //將新元素放入最後一位 12 dest[src.length]=s;
13 //將原先的數據對應下標放入新數組 14 for(int i = 0 ;i<src.length;i++) { 15 dest[i]=src[i]; 16 17 } 18 //將原數組指向新數組 19 src=dest; 20 } 21 /** 22 * 根據下標提取元素的方法 23 * @param Index 要提取元素的下標 24 * @return 返回所提取的元素 25 */ 26 public String get(int index) { 27 //返回對應下標的元素 28 return src[index]; 29 } 30 31 /** 32 * 獲得元素可變數組中元素的個數[長度] 33 * @return 返回元素的個數 34 */ 35 public int size() { 36 //返回數組的長度 37 return src.length; 38 } 39 /** 40 * 將新元素插入到指定位置 41 * @param s 要插入的新元素 42 * @param index 要插入的位置 43 */ 44 public void insert(String s,int index) { 45 //創建一個新的數組,其長度為原數組長度加1 46 String[] dest = new String[src.length+1]; 47 //將指定的元素放入指定的位置 48 dest[index]=s; 49 //在指定下標之前的元素對應下標放入新數組 50 for(int i=0;i<index;i++) { 51 dest[i]=src[i]; 52 } 53 //在指定下標之後的元素對應其下標加1放入新數組 54 for(int i=index+1;i<src.length+1;i++) { 55 dest[i]=src[i-1]; 56 } 57 src=dest; 58 } 59 /** 60 * 刪除指定未知的元素 61 * @param index 要刪除的元素的下標 62 */ 63 64 public void delete(int index) { 65 //創建一個新的數組,其長度為原數組長度減1 66 String[] dest = new String[src.length-1]; 67 //指定下標之前的原數組元素對應其下標位置放入新數組 68 for(int i=0;i<index;i++) { 69 dest[i]=src[i]; 70 } 71 //指定下標之後的原數組元素對應其下標位置-1放入新數組 72 for(int i=index+1;i<src.length;i++) { 73 dest[i-1]=src[i]; 74 } 75 src=dest; 76 } 77 78 /** 79 * 將指定位置的元素與指定元素替換 80 * @param index 指定位置的下標 81 * @param s 要替換的元素 82 * @return 返回替換後的 83 */ 84 85 public String replace (int index,String s) { 86 return src[index]=s; 87 } 88 }

感謝閱讀

如何自定義一個長度可變數組