public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i=0; i<list.size(); i++) {
if (list.get(i) == 1) {
list.remove(i); // error
}
}
System.out.println(list);
}
在使用场景时,是为了过滤数字1。而在使用list.remove(i)时,这样会导致索引出错,只要删除了一个数字1之后,就会导致list中的元素全部依次左移一位,也就是索引全部-1。
所以为了正常使用需要改成 list.remove(i--);
还有一个特别需要强调的地方,在使用以上方法时,一定要注意不能这样使用,如:
int size = list.size();
for (int i=0; i<size ; i++) {
if (list.get(i) == 1) {
list.remove(i); // error
}
}
第二种方法:
if (list.get(i) == 1) {
list.remove(i);
i--;
continue;
}
推荐使用第一种简单明了
本文探讨了在Java中使用集合时,如何正确地删除特定元素以避免索引错误,通过实例展示了错误使用list.remove(i)的后果,并提供了推荐的修正方法。
814

被折叠的 条评论
为什么被折叠?



