黑马程序员技术交流社区
标题:
Java的集合并发问题及解决方案
[打印本页]
作者:
刘郑瑞
时间:
2013-1-20 10:12
标题:
Java的集合并发问题及解决方案
Iterator和集合类操作时有并发冲突:
public class Test9 {
public static void main(String [] args){
List list = new ArrayList();
list.add("AA");
list.add("bb");
list.add(1);
list.add('z');
System.out.println(list);
Iterator it = list.iterator();//怎么修改?ListIterator it = list.listIterator();
while(true){
Object obj = it.next();
if(obj.equals("AA")){
it.add("hahah");//这时候操作会发生冲突。
}
}
}
}
作者:
唐晓
时间:
2013-1-20 11:02
ListIterator it = list.listIterator();
while(it.hasNext()){
Object obj = it.next();
if(obj.equals("AA")){
it.add("hahah");//这时候操作会发生冲突。
}
}
System.out.println(list);
Iterator只能查询,ListIterator能增删改查。
作者:
ying
时间:
2013-1-20 13:55
<P> List list = new ArrayList();
list.add("AA");
list.add("bb");
list.add(1);
list.add('z');
System.out.println(list);
ListIterator it = list.listIterator();
while(it.hasNext())
{
Object obj = it.next();
if(obj.equals("AA"))
{
it.add("hahah");
}
}
System.out.println(list.toString());
</P>
复制代码
Iterator 是一个接口它没有添加元素的方法,
ListIterator 具有添加元素的方法
你的代码中的while你写的是死循环,当集合中的元素取出来完的话,没没有元素可取
就会报NoSuchElementException异常,
所以当在取下一个元素时一定要判断集合中是否有元素,
应该用迭代器中的hasNext()方法来判断
作者:
高浩
时间:
2013-1-23 16:04
本帖最后由 高浩 于 2013-1-23 16:05 编辑
Iterator it=lis.ListIterator();
当迭代器迭代时,对元素进行操作时,过后产生了不确定性,所以会报错
可以通过ListIterator来解决,他可以实现边迭代,边实现操作,实现增删改查
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2