import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTraversalAndRemoval {
public static void main(String[] args) {
// 创建一个列表并添加一些元素
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("grape");
// 方法1: 使用 Iterator 遍历并删除元素
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String fruit = iterator.next();
if (fruit.equals("banana")) {
iterator.remove(); // 注意:只能使用 iterator.remove() 来安全地删除元素
}
}
// 方法2: 使用 for-each 循环(不推荐用于删除操作)
// for (String fruit : list) {
// if (fruit.equals("orange")) {
// list.remove(fruit); // 这会导致 ConcurrentModificationException 异常
// }
// }
// 方法3: 使用增强 for 循环的替代方案 - 倒序遍历
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).equals("grape")) {
list.remove(i); // 倒序遍历可以避免索引越界问题
}
}
// 输出最终的列表内容
System.out.println(list);
}
}
Iterator 遍历删除:这是最安全的方式,使用 Iterator 的 remove() 方法可以在遍历过程中安全地删除元素。直接调用 list.remove() 在遍历中会导致 ConcurrentModificationException 异常。
for-each 循环删除:这种方式在遍历时删除元素是不安全的,会导致 ConcurrentModificationException 异常。因此不推荐在遍历过程中使用 list.remove()。
倒序遍历删除:通过倒序遍历列表并删除元素,可以避免索引越界的问题。这种方法适用于需要在遍历过程中删除元素的场景。
以上代码展示了三种常见的遍历和删除方式,并解释了每种方式的优缺点。
上一篇:java基本数据类型有哪八种
下一篇:java hashmap初始化
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站