gpt4 book ai didi

java - 使用索引从 ArrayList 中删除 int 但将其视为 Object java

转载 作者:行者123 更新时间:2023-11-30 03:08:37 27 4
gpt4 key购买 nike

我正在尝试使用以下代码从包含 [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);
}

这里发生的事情是,在我添加 ans 中的前 3 个整数后,我将删除它们。有多个项目将传递到appendRow函数中,但我只需要前三个,下一个函数只需要其余的(即[6,2,3,0,0,0])。

问题是,当 y = 2 时,an.remove(y) 不会删除索引为 2 的 0,而是删除 2,因此列表变为 [0, 6, 3, 0, 0, 0],这是完全错误的。

最佳答案

反转 for 循环的方向。改变

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);
}

因为当您删除第一个元素时,第二个元素现在是第三个元素。即 9, 0, 0, 6, 2, 3, 0, 0, 0 变成 0, 0, 6, 2, 3, 0, 0, 0 然后0, 6, 2, 3, 0, 0, 0 然后你报告的 0, 6, 3, 0, 0, 0 (这正是你告诉它的要做)。

关于java - 使用索引从 ArrayList<Integer> 中删除 int 但将其视为 Object java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147091/

27 4 0