List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(4);
list.add(4);
list.add(1);
// 方法一 通过迭代器实现
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
int a = iterator.next();
// if(删除元素条件)
if (a == 1) {
iterator.remove();
}
}
// 方法二 for循环 i++
for (int i = 0; i < list.size(); i++) {
// if(删除元素条件)
if (list.get(i) == 2) {
list.remove(i);
i--; // 这行是为了返回到删除前的索引位置,否则会跳过删除元素后面的元素
}
}
// 方法三 for循环 i--
for (int i = list.size() - 1; i >= 0; i--) {
// if(删除元素条件)
if (list.get(i) == 2) {
list.remove(i);
}
}
// foreach方法删除元素,会报错。但是如果删除的元素位于倒数第二个则会正常运行,这是一个坑,勿踩!
// 具体原因,自行查看源码