java exception之ConcurrentModificationException

java exception之ConcurrentModificationException

原因

        List<String> arrayList = new ArrayList<>();
        arrayList.add("jack2");
        arrayList.add("jack3");
        arrayList.add("jack4");
        arrayList.add("jack5");
        arrayList.add("jack6");
        arrayList.add("jack7");

        Iterator<String> iterator = arrayList.iterator();
        while (iterator.hasNext()){
            String key = iterator.next();
            //原因:使用iterator循环时, 使用list的remove()方法;
            arrayList.remove(key);
        }

解决

1、使用iterator.remove()方法;

    List<String> arrayList = new ArrayList<>();
    arrayList.add("jack2");
    arrayList.add("jack3");
    arrayList.add("jack4");
    arrayList.add("jack5");
    arrayList.add("jack6");
    arrayList.add("jack7");
    Iterator<String> iterator = arrayList.iterator();
    while (iterator.hasNext()){
        String key = iterator.next();
        //解决方式使用iterator.remove()方法
        iterator.remove();
    }

2、使用线程安全CopyOnWriteArrayList进行删除操作

        List<String> myList = new CopyOnWriteArrayList<String>();
        myList.add( "1");
        myList.add( "2");
        myList.add( "3");
        myList.add( "4");
        myList.add( "5");
        Iterator<String> it = myList.iterator();
        while (it.hasNext()) {
            String value = it.next();
            if (value.equals( "3")) {
                myList.remove(value);
            }
        }
        System.out.println(myList.toString());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值