Java ArrayList.remove()问题

新手上路,请多包涵

这是我的代码的一部分。

 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 许可协议

阅读 405
2 个回答

问题是您将 Integer 传递给 remove 方法,而不是 int。当您传递一个 Integer 时,它假定 Integer 本身就是您要删除的内容,而不是该索引处的值。比较方法

remove(Object o)
remove(int i)

所以这样做:

 int keyLocation = reducedFD.indexOf(KeyPlus.get(KEYindex));
someArrayList.remove(keyLocation);

原文由 MeBigFatGuy 发布,翻译遵循 CC BY-SA 2.5 许可协议

这是简短的描述:

 remove(Object o) // remove object
remove(int index) // remove the object in that index

如果你写 .remove(5) 编译器将它理解为原始类型,因此作为 索引 并删除 index(5). 如果你想删除对象你应该写 .remove(new Integer(5))

原文由 user467871 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏