gpt4 book ai didi

java - ArrayList 在 java 中不起作用

转载 作者:行者123 更新时间:2023-12-01 18:08:55 26 4
gpt4 key购买 nike

我想创建一个以 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]);
}

我得到的结果是这样的

enter image description here

而不是值(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]);
}

由于每次循环迭代的重点是创建一个新数组并存储新值,而不是覆盖现有数组,就像您单步执行代码一样,您可能会注意到如何不在循环中分配新数组。

关于java - ArrayList<Integer[]> 在 java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com