gpt4 book ai didi

java - 在 map 中执行removeAt时出现ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 17:26:00 25 4
gpt4 key购买 nike

我尝试在未选中的情况下从 map 中删除一个值,但由于某种原因,它给了我一个 IndexOutOfBoundsException

itemView.checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
item.isChecked = isChecked
if(isChecked){
map.put(position,true)
} else {
map.removeAt(position)
}
}

这里我有两个复选框,当我选中两个都可以时。当我取消选中第一个时,可以,但是当我尝试取消选中第二个时,它会因此错误而崩溃

 java.lang.ArrayIndexOutOfBoundsException: src.length=11 srcPos=2 dst.length=11 dstPos=1 length=-1

问题出在 map.removeAt(position) 处,但我不知道为什么会失败,因为该位置是实际存在的数组中的一个元素。

我正在使用 SparseBooleanArray

最佳答案

问题不在于我所说的数组的位置,因为这个数组永远不会改变(我从不删除其中的任何项目,只是删除包含此映射 boolean 值的 map 上的值)

所以问题出在removeAt(position)

示例

我有一个包含 2 个值的 Map 数组

0 - true
1 - true

如果我现在做map.RemoveAt(0),我就拥有了

1 - true (actually in position 0 right now)

但现在如果我尝试再次执行map.removeAt(1),则位置 1 中没有元素,因此这就是出站的原因

我已经通过在 map 中通过按键删除来解决这个问题

map.remove(position,true) 

因此,这将删除 1 - true 值以及仅将 true 值作为该映射的值

关于java - 在 map 中执行removeAt时出现ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61210422/

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