2013-10-22 18 views
0

我想知道如果我可以重新維數組只要我想。我試圖做到這一點,似乎沒有任何問題。我創建了這些步驟如何重新維度數組,只要我想

//step 1 
String parole[]; 

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

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

請問這怎麼一回事,因爲沒有在我腦海裏的東西,告訴我,我不能做一個數組。也許我在什麼地方看過什麼東西......

+5

改爲使用'ArrayList'。 –

+3

您可以,但您必須每次都複製所有數據。 –

+0

如果您不想使用'List',那麼這裏有一個完整的API:http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange%28T [], %20int,%20int%29 – PeterMmm

回答

3

當然你可以創建一個新的數組對象並將其分配給一個數組引用。

但是,如果您預計在您的最後一步之後假釋[0]仍然存在「ciao」,那麼您就錯了。

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()]); 
0

製作一個「新String []「就是這樣,創建一個新的字符串數組。這意味着您之前在參考中的任何數據都會被「新」對象覆蓋。 (如果你有其他的參考字符串[]它不會丟失)然而,

因此,總之,不,你不能「重新維數」一個數組。

就你而言,最好使用一個ArrayList,它提供了動態調整大小(並且更易於使用)。

0

我同意@BigMike 你應該嘗試使用ArrayList,因爲它內置了比我們手動執行的方法更好的容量方法。 它的工作在amortized time這將是我們很難實現的。

有關更多詳細信息,請參閱this