簡體   English   中英

Java - 將ArrayList <int []>轉換為int [] []

[英]Java - Converting an ArrayList< int[] > to int[][]

我有一個ArrayList <int []>,並希望將其轉換為int [] []。 結果數組對於每個條目都具有相同的int [],即使它們是不同的(是的,我已經檢查過了!)。 我錯過了一些簡單的東西嗎? int [] []中數組的長度由arr.length給出

int[][] vals = new int[ list.size() ][ arr.length ];
list.toArray( vals );

編輯:我已經意識到代碼工作正常,所以這是代碼中出現問題的更大樣本。 permute()按照它的說法進行操作並置換給定數組中的整數,當完成新的排列時返回true。

List< int[] > list = new ArrayList<>();
do {
    list.add( vals );
} while ( permute( vals ) ); // I print vals here and the permutations are all unique each time
int[][] permutations = new int[ list.size() ][];
list.toArray( permutations );
// If I print permutations now, all the arrays inside it are the same
int[][] vals = new int[ list.size() ][ arr.length ];

for(int i = 0; i < list.size(); i++) {
   vals[i] = list.get(i);
}

回答新問題:你沒有顯示vals的聲明,但假設它被聲明為int[]vals實際上是數組的引用 因此,每次執行list.add ,都會向列表添加相同的引用。 我假設permute(vals)更改列表中的值,但它不會更改引用,這意味着在循環結束時, list中的每個項都是具有相同值的相同數組的相同引用。 你需要做的是復制數組。 嘗試這個:

list.add( Arrays.copyOf (vals, vals.length) );

仔細閱讀文檔http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28%29

你需要

vals = list.toArray(vals);

我不知道為什么它對你們中的某些人不起作用 - 它對我很有用

暫無
暫無

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

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