如何根据需要重新定义数组的大小

时间:2013-10-22 13:54:37

标签: java jsp

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

//step 1
String  parole[];

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

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

我问这个因为我脑子里有什么东西告诉我,我不能这样做。也许我在某个地方的某处读过......

4 个答案:

答案 0 :(得分:3)

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

但如果你认为假释[0]在你的最后一步之后仍然会有“ciao”,你就错了。

答案 1 :(得分: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()]);

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我同意@BigMike 您应该尝试使用ArrayList,因为它内置了容量方法,这比我们手动操作要好得多。 它完成amortized time中的工作,这对我们来说很难实现。

有关详细信息,请参阅this