码迷,mamicode.com
首页 > 编程语言 > 详细

java ListIterator接口

时间:2017-03-07 00:20:00      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:lis   cat   object   next   current   解决   原因   代码   size   

并发修改异常产生的原因及解决方案
* A:案例演示
* 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

List list = new ArrayList();
list.add("a");
list.add("b");
list.add("world");
list.add("d");
list.add("e");

/*Iterator it = list.iterator();    //边遍历,  边增加元素 -------- 是程序不允许的操作
while(it.hasNext()) {
String str = (String)it.next();
if(str.equals("world")) {
list.add("javaee"); //这里会抛出ConcurrentModificationException并发修改异常
}
}*/


* B:ConcurrentModificationException出现
* 迭代器遍历,集合修改集合
* C:解决方案
* a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)   //listiterator特有的方法解决这个问题
* b:集合遍历元素,集合修改元素

 

解决办法:

ListIterator lit = list.listIterator(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
while(lit.hasNext()) {
String str = (String)lit.next();
if(str.equals("world")) {
lit.add("javaee");
//list.add("javaee");
}
}

ListIterator
* boolean hasNext()是否有下一个
* boolean hasPrevious()是否有前一个
* Object next()返回下一个元素
* Object previous();返回上一个元素

  

java ListIterator接口

标签:lis   cat   object   next   current   解决   原因   代码   size   

原文地址:http://www.cnblogs.com/yimian/p/6512554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!