从ArrayList中删除int<;整数>;使用索引但被视为对象java
我试图使用以下代码从包含[9,0,0,6,2,3,0,0,0]的ArrayList中删除int从ArrayList中删除int<;整数>;使用索引但被视为对象java,java,arraylist,Java,Arraylist,我试图使用以下代码从包含[9,0,0,6,2,3,0,0,0]的ArrayList中删除int static void appendRow(ArrayList<ArrayList<Integer>> ans) { int ind = 0; while(yolo.size() < 81) { for(int x = 0; x < ans.size(); x++) { ArrayList<Intege
static void appendRow(ArrayList<ArrayList<Integer>> ans) {
int ind = 0;
while(yolo.size() < 81) {
for(int x = 0; x < ans.size(); x++) {
ArrayList<Integer> an = ans.get(x);
for(int i = ind; i < ind+3; i++) {
yolo.add(an.get(i));
}
for(int y = 0; y < 3; y++) {
an.remove(y);
}
}
ind+=3;
}
System.out.println(yolo);
}
static void appendRow(ArrayList ans){
int ind=0;
while(yolo.size()<81){
对于(int x=0;x
这里发生的事情是,在我从ans添加前3个int之后,我将删除它们。有多个项将被传递到appendRow函数中,但我只需要前三项,下一个函数只需要其余项(即[6,2,3,0,0,0])
问题是当y=2时,.remove(y)不会删除索引为2的0,而是删除2,因此列表变成[0,6,3,0,0,0],这是完全错误的。为
循环反转的方向。改变
for (int y = 0; y < 3; y++) {
an.remove(y);
}
或类似于
for (int y = 2; y >= 0; y--) {
an.remove(y);
}
for (int y = 0; y < 3; y++) {
an.remove(0);
}
for(int y=0;y<3;y++){
an.移除(0);
}
因为当你移除第一个元素时,第二个元素就是第三个元素。也就是说,9,0,0,6,2,3,0,0,0,0
变成0,0,6,2,3,0,0,0
,然后0,6,2,3,0,0,0
,然后你报告的0,6,3,0,0,0,0
(这正是你告诉它要做的)。尝试使用a.remove(新整数(y))
嘿,程序员,谢谢你的回复,但不幸的是它不起作用。它返回[9,0,6,3,0,0,0]@RilecArney:yolo是另一个ArrayListOh好的,谢谢,试试@Elliot Frisch说的汉克斯堆Elliot!现在可以了。我忘了列表大小的减小会影响索引。谢谢