[英]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.