java火fouco评测_Java问题求解

展开全部

你在用iterator遍历原list的时候, 是不可以32313133353236313431303231363533e78988e69d8331333335313233对原list做任何增删改操作. 你的程序在运行时会报错Exception in thread "main" java.util.ConcurrentModificationException

at java.util.AbstractList$Itr.checkForComodification(Unknown Source)

at java.util.AbstractList$Itr.next(Unknown Source)

at IteratorDemo.addTicket(IteratorDemo.java:27)

at IteratorDemo.main(IteratorDemo.java:14)

iterator借口内部只有一个remove()方法, 你可以在做判断之后,直接调用it.remove()将当前对象从list中删除.以达到, for/while 循环遍历无法对list本身进行删除的作用.import java.util.ArrayList;

import java.util.Iterator;

public class IteratorDemo

{

public static void main(String[] args)

{

new IteratorDemo().addTicket();

}

public void addTicket()

{

ArrayList parkingTickets = new ArrayList();

parkingTickets.add(new ParkingTicket("1"));

parkingTickets.add(new ParkingTicket("2"));

parkingTickets.add(new ParkingTicket("3"));

System.out.println(parkingTickets);

Iterator it = parkingTickets.iterator();

while (it.hasNext())

{

ParkingTicket ticket = it.next();

if (ticket.name.equals("2"));

it.remove(); // will remove current parkingTicket from parkingTickets

// parkingTickets.add(ticket); //java.util.ConcurrentModificationException

}

System.out.println("===============");

System.out.println(parkingTickets);

}

class ParkingTicket

{

String name;

public ParkingTicket(String name)

{

this.name = name;

}

@Override

public String toString()

{

return name;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值