public class ListRemoveTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 4, 6, 8));
Iterator<Integer> iterator = list.iterator();
for (; iterator.hasNext(); ) {
int element = iterator.next();
if (element == 2) {
list.remove(element);//这里不能使用list来删除元素
}
}
}
}
正确方式1:
public class ListRemoveTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 4, 6, 8));
Iterator<Integer> iterator = list.iterator();
for (; iterator.hasNext(); ) {
int element = iterator.next();
if (element == 2) {
iterator.remove();
}
}
}
}
正确方式2:注意,list.size()是放在for语句中每次循环之前重新获取的,所以不会有问题
public class ListRemoveTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 4, 6, 8));
for (int i = 0; i < list.size(); i++ ) {
int element = list.get(i);
if (element == 2) {
list.remove(i);
}
}
}
}