在Java中更改数组的大小

时间:2014-02-19 04:31:40

标签: java arrays string

我正在尝试更改String数组的大小,但我不知道还有什么要尝试,这个方法不起作用。这是我的代码:

import java.util.Scanner;

public class test{
    public static void main(String[] args){
        String[] names;
        names = new String[5];
        for(int i=0; i<10; ++i){
            addToArray(names, i, "blah");
        }
        System.out.println(names.length);
        System.out.println("bye");
    }

    public static void addToArray(String[] names, int i, String name){
        if (i < names.length){
            names[i] = name;
        }
        else {
            String[] temp;
            temp = new String[names.length + 10];
            System.arraycopy(names, 0, temp, 0, names.length);
            addToArray(temp, i, name);
            names = temp;
        }
    }
}

我的问题是,当我运行它时,会打印出我的数组的最终长度是5,应该是15。

4 个答案:

答案 0 :(得分:6)

问题是,您无法更改任何(Object)方法参数的引用,因此......

names = temp;

仅在names方法的上下文中更改addToArray变量的引用。您应该使用return语句代替......

public static String[] addToArray(String[] names, int i, String name){
    if (i < names.length){
        names[i] = name;
    }
    else {
        String[] temp;
        temp = new String[names.length + 10];
        System.arraycopy(names, 0, temp, 0, names.length);
        names = addToArray(temp, i, name);
    }
    return names;
}

一旦方法返回,不要忘记维护引用...

for(int i=0; i<10; ++i){
    names = addToArray(names, i, "blah");
}

答案 1 :(得分:2)

创建数组后,无法更改该数组的大小。一旦创建,数组就可以容纳固定数量的对象。

然而ArrayList能够动态更改它所拥有的对象数量。初始化简单ArrayList的方法是:

ArrayList<String> stringArrayList = new ArrayList<>();

答案 2 :(得分:1)

三分

  1. 数组是java中的特殊对象,它们具有简单的属性 名为length的{​​{1}}。
  2. 此外,您正在创建一个新数组,而不是重新调整原始数组的大小。
  3. 您无法更改任何方法参数的引用

答案 3 :(得分:0)

将返回类型更改为 String [] 并返回 addToArray()方法中的名称并指定names = addToArray(String [] names,int i,字符串名称);在 mainMethod 中,因此您可以在尺寸增加时保持跟踪参考