List三种元素删除操作
先创建一个list = [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9]。
- for循环
for (int j = 0; j < list.size(); j++) {
if (list.get(j) == 5) {
list.remove(j);
System.out.println("for:" + list);
}
}
结果为:for:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。
这样是会有问题的:只能删除前边一个5。原因就是删除下标是5的元素之后,后续的元素向前移动一位,导致下一次循环时候,下标为6的元素是6,这就跳过了第二个5。
解决方法:
for (int j = 0; j < list.size(); j++) {
if (list.get(j) == 5) {
list.remove(j);
System.out.println("for:" + list);
j--;
}
}
- foreach
for (Integer i : list) {
if (i == 7) {
list.remove(i);
}
System.out.println("foreach:" + i + "foreach size:" + list);
}
结果为:
3. Iterator(推荐)
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
if (6 == it.next()) {
it.remove();
}
System.out.println("Iterator list:" + list);
}