这是我的代码的一部分。
Integer keyLocation = reducedFD.indexOf(KeyPlus.get(KEYindex));
someArrayList.remove(keyLocation);
所以我在这里做的是分配 keyLocation(reducedFD arrayList 中字符串的第一次出现)。但是当我想从 someArrayList 中删除具有该 keyLocation 的项目时,它将不起作用。
如果我手动输入:
someArrayList.remove(0); //Let's say 0 is the actual keyLocation
这确实有效。
奇怪的是以下代码也有效:
someArrayList.remove(keyLocation + 1);
有什么提示吗?
这是主循环:
for (int KEYindex = 0; KEYindex < KeyPlus.size(); KEYindex++){
Integer keyLocation = reducedFD.indexOf(KeyPlus.get(KEYindex));
if (reducedFD.contains(KeyPlus.get(KEYindex))){
KeyPlus.add(reducedFD.get(keyLocation+1));
CheckedAttributesPlus.add(KeyPlus.get(KEYindex));
reducedFD.remove(keyLocation);
}
}
原文由 user461316 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是您将 Integer 传递给 remove 方法,而不是 int。当您传递一个 Integer 时,它假定 Integer 本身就是您要删除的内容,而不是该索引处的值。比较方法
所以这样做: