动态扩展数组长度(自定义)

动态扩展数组长度(自定义)

在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);
    }
}

代码中没有遍历输出数组中的元素进行校验,这个步骤自行完成

相关文章
相关标签/搜索