動態擴展數組長度(自定義)

動態擴展數組長度(自定義)

在Java中,建立的數組都是定長的,也就是數組一旦建立,長度就已經肯定了,可是咱們每每遇到要添加的元素個數,超出了數組的長度,這種狀況如何處理了?接下來就介紹一種簡單的思路去擴展數組的長度。數組

1、動態擴展數組的思路函數

1)定義一個數組。
2)向數組中添加元素。
3)當元素的個數超出了數組的長度的時候,則須要對數組進行動態的擴容
4)再次新建一個數組,該數組的長度爲第一步建立的數組長度基礎上再增長50%(初始化數組長度爲10,每次增長5)。
5)在建立完新的數組以後,必定要記得將原有數組中的全部元素,複製到新的數組中。
測試

2、代碼設計(以String數組爲例)spa

1)代碼示例1:定義一個方法,用於向數組中添加元素,元素和數組做爲參數傳遞。設計

 1 public void addElement(String[] str,String element){
 2     //找出還未存放元素的位置下標,以值爲null則認定爲能夠添加元素
 3     //定義一個變量,用於記錄下標值,默認值爲-1
 4     int index = -1;
 5     //使用循環,找出第一個爲null值得下標
 6     for(int i = 0;i < str.length;i++){
 7         //判斷第一個爲null得值,則結束循環
 8         if(str[i] == null){
 9             index = i;
10             break;
11         }
12     }
13     //根據index得值,判斷是否有可以存放元素,
14     if(index != -1){
15         str[index] = element;
16     }else{
17         //若是index等於-1,則說明上面循環中沒有找到null得下標位置,說明已經存放不下,則須要動態擴展
18         //直接調用動態擴展數組得方法,並賦值給str數組
19         str = arrayLengthen(str);
20         //使用遞歸,再次調用添加元素的方法,如今使用的數組,是已經擴容以後的數組
21         addElement(str,element);
22     }
23 }

2)代碼示例2:定義一個函數,用於動態擴展數組得長度,每次給數組增長長度爲5,數組做爲參數傳遞code

public String[] arrayLengthen(String[] str){
    //獲取數組得長度:
    int len = str.length;
    //新建一個數組,長度爲原有數組長度上面再增長5個
    String[] tempArray = new String[len + 5];
    //將原來數組中的全部元素,複製到新建的數組中,使用循環完成。(很重要)
    for(int i = 0;i < str.length;i++){
        tempArray[i] = str[i];
    }
    //將數組返回
    return tempArray;
}

3)代碼示例3:測試代碼對象

public static void main(String[] args){
    //新建一個數組,長度爲10
    String[] str = new String[10];
    Scanner scanner = new Scanner(System.in);
    //使用死循環輸入
    while(true){
        System.out.print("請輸入字符串:");
        String element = scanner.next();
        //調用添加數組的方法:
        //靜態中調用非靜態方法,須要建立對象,這裏根據本身的類,本身建立對象便可,略
        addElement(str,element);
    }
}

代碼中沒有遍歷輸出數組中的元素進行校驗,這個步驟自行完成

相關文章
相關標籤/搜索