[英]ArrayList<Integer[]> not working in java
我想用int[]
作為對象創建一個arraylist
ArrayList<Integer[]> b= new ArrayList<Integer[]>();
Integer[] a= new Integer[2];
for(Integer i=0;i<20;i++){
a[0]=i;
a[1]=i;
b.add(a);
}
for(int i=0;i<20;i++){
System.out.println("line"+i+"= "+b.get(i)[0]+" "+b.get(i)[1]);
}
我得到的結果是
而不是值(0 0 1 1等),似乎只保存了最后一個。 我也嘗試過使用int類型而不是Integer但結果相同
考慮在循環內初始化a
,否則您將一直在同一數組上進行寫入。 代替
ArrayList<Integer[]> b= new ArrayList<Integer[]>();
Integer[] a= new Integer[2];
for(Integer i=0;i<20;i++){
a[0]=i;
a[1]=i;
b.add(a);
}
for(int i=0;i<20;i++){
System.out.println("line"+i+"= "+b.get(i)[0]+" "+b.get(i)[1]);
}
考慮一下:
ArrayList<Integer[]> b= new ArrayList<Integer[]>();
for(Integer i=0;i<20;i++){
Integer[] a= new Integer[2];
a[0]=i;
a[1]=i;
b.add(a);
}
for(int i=0;i<20;i++){
System.out.println("line"+i+"= "+b.get(i)[0]+" "+b.get(i)[1]);
}
關鍵是每次循環迭代都需要創建一個新數組並存儲新值,而不是覆蓋現有值,就像您逐步執行代碼一樣,您可能會注意到您從未在循環內分配新數組。
您必須為要添加的每個元素聲明一個新數組。 否則,它們都引用相同的內存。 在for循環中而不是循環之前聲明數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.