java - 并发读取并从列表中删除

标签 java

public static void main(String[] args) {    
    List<String> list = new ArrayList<String>(); 
    list.add("Value1"); 
    list.add("Value2"); 
    list.add("Value3"); 

    for(String val: list ) {  
        list.remove(0);     
        System.out.println(list); 
    } 
}

o\p:[值2,值3] 线程“main”中的异常 java.util.ConcurrentModificationException

这里我尝试同时读取和删除第 0 个元素。 所以它应该给出一个异常。但是我的qn是为什么它在异常之后执行println语句。当它发现异常时,它应该从循环中出来。

最佳答案

此处不应使用 for 循环。使用不会导致异常的迭代器:

ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
    String string = iterator.next();
    iterator.remove();
}

关于java - 并发读取并从列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420577/

相关文章:

java - 如何传递 Java 方法参数以获得 JLabel 的正确水平对齐方式

java - [BEGINNER]在交换机默认设置循环

java - NetBeans 制作的 jar 文件无法通过双击启动

java - 编译java包类。无法访问类。使用包时类文件包含错误的类

java - 如何将私有(private) jar 部署到 gitlab Maven 存储库

java - java spring boot/spring security(HttpSecurity)中的 session 到期时如何自动注销

java - 删除超过 30 天的 server.log.yyyy-mm-dd jboss eap 6.2 standalone

java - 选择 JComboBox 后立即更新 JComboBox

java - 使用 JerseyIncation 构建器测试放置格式错误的 json

java - 获取 zip 条目的实际大小