今天在用List的remove()方法的时候遇到了一个小问题,由于remove方法是根据list的下标索引区删除一个元素的,所以每次remove掉一个元素之后list的总长度就会减去1,而且List后面的元素会自动的去覆盖前一个被删除元素,如此容易出现下标越界的异常,为了解决这个问题:建议循环遍历List的时候倒叙遍历
程序代码:
List<String> list = new ArrayList<String>();
list.add("xxx1");
list.add("xxx2");
list.add("xxx3");
list.add("xxx4");
list.add("xxx5");
for (int i = list.size(); i >=0 ; i--) {
if (i == 2 || i == 3) {
list.remove(i);
}
}
for (String str: list) {
System.out.println("str------------>" + str);
}
输出为:
str------------>xxx1
str------------>xxx2
str------------>xxx5
如此就会避免问题
程序代码:
List<String> list = new ArrayList<String>();
list.add("xxx1");
list.add("xxx2");
list.add("xxx3");
list.add("xxx4");
list.add("xxx5");
for (int i = list.size(); i >=0 ; i--) {
if (i == 2 || i == 3) {
list.remove(i);
}
}
for (String str: list) {
System.out.println("str------------>" + str);
}
输出为:
str------------>xxx1
str------------>xxx2
str------------>xxx5
如此就会避免问题