老师教你学Java:关于Iterator迭代器的注意事项(耿祥义)"/>
关于Iterator迭代器的注意事项
耿祥义
主要内容
iterator方法
ConcurrentModificationException异常
for-each遍历集合
for 遍历集合
代码与效果
维保合同范本1.iterator方法
Java集合框架中的Collectio狄光嗣n接口的方法:
返回当前集合的一个实现Iterator<E>接口的实例,称作当前集合的 迭代器,比如List<代理人授权委托书String>的实例list,调用iterator返回list的迭代器:
2.ConcurrentModificationException异常
需要注意的是,当在一个线程中 ,一旦iterator返回了某个集合的迭代器:iteraor,并开始使用这个迭代器(迭代器调用了某个方法),系统将禁止本线程或其它线程让集合调用自己的remove和add方法(例如list.remove(0))引起集合的结构发生变化,也禁止对集合进行排序,如果进行这些操作,程序运行时(无编译错误)将触发
java.util.ConcurrentModificationE子集个数怎么算xception异常。
必须自制草莓酱等到 iterator返回的迭代器被使用完毕,才允许集合 调用自己的remove和add方法或排序集合。
但是,程序允许迭代器iteraor调用自澳门1949己实现的 Iterator接口受宠若惊的近义词的中的remove方法删除当前迭代器的next返回的集合中的元素(Iterator接口没有提供add方法)。
3.for-each
使用for-each遍历一个集合时,禁止当前集合使用remove和add方法引起集合的结构发生变化,也禁止对集合进行排序。其原因是,for-each算法的内部中启用了集合的迭代器(用户知道即可,但用户程序不能显式地看见相应的代码)。例如下列代码无工资税率计算编译错误,但运行时可能将触发火车快跑ConcurrentModificationException异常
下列代码无编译错误,但运行时可电脑锁屏怎么设置能触发ConcurrentModificationException异常
下列代码无编译错误,但运行时可能将触发ConcurrentModificationException异常
注 但允许替换操作,比如,list.set(0,"你好");
5.for
普通的循环语句,默认不会触发集合的迭代器,因此不影响集合使用remove和add方法。例如,下列代码运行正常。
展开全文
6.实例代码与运行效果
MainClass.java
代码【1】替换为 list.add("Java");或 Collections.sort(list);将触发ConcurrentModificationException,运行效果如图:
代码【2】替换为 list.remove(s);或 Collections.sort(list);将触发ConcurrentModificationException,运行效果略。
耿祥义主要教材源代码暨习题解答下载
本文发布于:2023-07-26 07:24:18,感谢您对本站的认可!
本文链接:http://www.ranqi119.com/ge/78/635660.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |