深圳招聘网官网,东莞百度推广优化公司,教学网站系统流程图,我会编程怎么做网站Java List循环安全删除元素的几种方式如下#xff1a;
使用迭代器#xff08;Iterator#xff09;#xff1a;通过调用List的iterator()方法获取List的迭代器#xff0c;然后使用迭代器的remove()方法删除元素。这种方式可以避免在遍历过程中修改List导致的并发修改异常
使用迭代器Iterator通过调用List的iterator()方法获取List的迭代器然后使用迭代器的remove()方法删除元素。这种方式可以避免在遍历过程中修改List导致的并发修改异常ConcurrentModificationException。
示例代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class SafeRemoveDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(A);list.add(B);list.add(C);IteratorString iterator list.iterator();while (iterator.hasNext()) {String item iterator.next();if (B.equals(item)) {iterator.remove();}}System.out.println(list);}
}使用Java 8的Stream API通过调用List的stream()方法创建一个Stream对象然后使用Stream的filter()和collect()方法过滤并收集需要保留的元素。这种方式也可以避免在遍历过程中修改List导致的并发修改异常。
示例代码
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class SafeRemoveDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(A);list.add(B);list.add(C);ListString filteredList list.stream().filter(item - !B.equals(item)).collect(Collectors.toList());System.out.println(filteredList);}
}使用CopyOnWriteArrayListCopyOnWriteArrayList是一种特殊的List实现它在进行修改操作时如add、set等会复制一个新的底层数组然后在新的数组上进行修改最后将新数组赋值给原数组。这样在遍历过程中对CopyOnWriteArrayList进行修改操作不会导致并发修改异常。但是CopyOnWriteArrayList的性能较差因为它需要频繁地复制底层数组。因此在不需要在遍历过程中修改List的情况下建议使用其他方式。