gpt4 book ai didi

java - array.remove() 给出 IndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-11-29 04:11:53 24 4
gpt4 key购买 nike

我试图从数组中删除一个项目(obv,如果数组包含它)但在尝试删除它时它总是给我一个 IndexOutOfBoundsException。

我不认为这个问题与评论部分中指出的问题相同,因为我试图弄清楚为什么在这种特定情况下这会给我一个错误。

我一直在寻找任何可能解决它的解决方案,但我一无所获,所以我希望这里有人能够告诉我为什么会这样。

我要编辑的数组是一个整数数组(从字符串数组转换而来)。让我向您展示一些代码。

for (final Alarm alarm : allAlarms) {
ArrayList<Integer> activos = IntegerArrayConverter.fromString(alarm.getActiveTags());
if (activos.contains(idTag)) {
activos.remove(idTag);
alarm.setActiveTags(IntegerArrayConverter.fromArrayList(activos));
app.updateAlarmActiveTags(alarm);
}
}

它在它说的地方崩溃了:

active.remove(idTag);

当应用程序到达该行时,我的数组大小为 1,其唯一值是 255。idTag 值也是 255。我不知道错误在哪里。

提前致谢!

activos arrat content

idTag value

解决方案:

正如他们在评论部分告诉我的那样,我将 ArrayList 的创建移到了 for 循环之外,并且还使用了:

activos.remove(Integer.valueOf(idTag));

代替:

activos.remove(idTag);

最佳答案

ArrayList 类有 2 个要删除的重载方法。一个带有整数参数,即 删除该索引处的项目,以及一个带有 Object 参数的项目。Java 中的重载解析总是在不考虑装箱和拆箱的情况下开始。因此它优先考虑 remove(int) 重载。应该将索引传递给 Arraylist 的 remove 方法。尝试用

替换行

activos.remove(0);或者activos.remove(新整数(255));迭代元素时不推荐使用 ArrayList.remove()

关于java - array.remove() 给出 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626862/

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