0

我想知道我是否可以根据需要重新调整数组的尺寸。我试着去做,似乎没有任何问题。我用这些步骤创建了一个数组

//step 1
String  parole[];

//step 1        
parole = new String[1];
parole[0] = "ciao";

 //step 1       
parole = new String[2];
parole[1] = "buongiorno";

我问这个是因为我脑子里有一些东西告诉我我做不到。也许我在某个地方读到了一些东西......

4

4 回答 4

3

当然,您可以创建一个新的数组对象并将其分配给数组引用。

但是,如果您期望 parole[0] 在您的最后一步之后仍然包含“ciao”,那您就错了。

于 2013-10-22T13:55:47.773 回答
0

是的,您可以,但是您需要将第一个数组复制到一个新数组中。

检查此示例代码:

public class ArrayCp {
    public static void main(String[] args)
    {
        String[] primoArray = new String[1];
        primoArray[0] = "Ciao";
        // Copio il primo array nel secondo cambiandone la dimensione (secondo parametro)
        String [] secondoArray = Arrays.copyOf(primoArray, 2);
        secondoArray[1] = "Buona Sera";

        for(String s : secondoArray) {
            System.out.println("Elemento: " + s );
        }
    }
}

但是最好使用 ArrayList:

ArrayList<String> theArr = new ArrayList<String>();
theArr.add("Ciao");
theArr.add("Buona Sera");
theArr.add("Buona Notte");

并回到一个简单的数组

String [] resArray = theArr.toArray(new String[theArr.size()]);
于 2013-10-22T14:03:53.087 回答
0

制作一个“new String[]”就是这样,制作一个新的字符串数组。这意味着您之前在引用中拥有的任何数据都将被“新”对象覆盖。(如果你有其他对 string[] 的引用,它不会丢失)

所以,简而言之,不,你不能“重新维度”一个数组。

在您的情况下,最好使用 ArrayList,它提供动态调整大小(并且更容易使用)。

于 2013-10-22T14:11:47.267 回答
0

我同意@BigMike 你应该尝试 ArrayList 因为它内置了容量方法,这比我们手动执行要好得多。它在摊销时间内完成工作,这对我们来说很难实现。

有关更多详细信息,请参阅

于 2013-10-22T14:13:20.777 回答