方式 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 }

感謝閱讀

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