簡體   English   中英

在java中動態分配數組

[英]Dynamically allocated array of arrays in java

我有一個數組數組對象的問題。 我嘗試了這樣的默認Java數組:

String[][] array = new String[5][5];

它奏效了。 但現在我面臨另一個問題。 我不知道數組的大小,所以我需要一個動態分配的數組數組。 我試過這個:

ArrayList<String> array = new ArrayList<>();
ArrayList<ArrayList<String>> arrayOfArrays = new ArrayList<>();

array.add("1");
array.add("2");
array.add("3");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);
array.clear();
array.add("4");
array.add("5");
array.add("6");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);

它打印:

[[1, 2, 3]]
[[4, 5, 6], [4, 5, 6]]

而且我不需要重寫它。 它應該是這樣的:

[[1, 2, 3]]
[[1, 2, 3], [4, 5, 6]]

我很長時間都面臨這個問題,我嘗試了很多解決方法,但我需要一些聰明的解決方案。 此外,我將不勝感激任何幫助。

我還有第二個問題。 如何在循環中添加它? 因為它具有與第一種情況相同的輸出。 例如:

for (int i = 0; i < array.size() - 1; i++) {
    arrayOfArrays.add(swap(array, i, i+1));       
}

您將相同的ArrayList實例兩次添加到外部List

您需要創建兩個不同的ArrayList實例以添加到您的arrayOfArrays

更換

array.clear();

array = new ArrayList<>();

你應該知道你只是使用相同的array對象,並將它添加到arrayOfArrays兩次,這就是為什么它打印兩次相同的東西。

你需要的是這個:

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

    ArrayList<String> array1 = new ArrayList<>();
    array1.add("1");
    array1.add("2");
    array1.add("3");
    arrayOfArrays.add(array1);
    System.out.println(arrayOfArrays);

    ArrayList<String> array2= new ArrayList<>();
    array2.add("4");
    array2.add("5");
    array2.add("6");
    arrayOfArrays.add(array2);
    System.out.println(arrayOfArrays);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM