从ArrayList中删除int<;整数>;使用索引但被视为对象java

从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

我试图使用以下代码从包含[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<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!现在可以了。我忘了列表大小的减小会影响索引。谢谢