黑马程序员技术交流社区
标题:
Listiterator的问题
[打印本页]
作者:
唐志海
时间:
2014-1-4 16:23
标题:
Listiterator的问题
本帖最后由 唐志海 于 2014-1-21 02:41 编辑
<span style="line-height: 1.5;"><div class="blockcode"><blockquote>import java.util.*;
public class ArrayListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al=new ArrayList<String>();
al.add("kk");
al.add("kd");
al.add("kc");
al.add("ka");
ListIterator lit=al.listIterator();
while(lit.hasNext())
{
Object obj=lit.next();
if(obj.equals("kc"))
al.add("sx");
}
sop(al);
}
}
复制代码
为什么会发生ConcurrentModificationException异常
作者:
taoge
时间:
2014-1-4 16:36
代码贴完整
作者:
李兴
时间:
2014-1-4 16:52
修改后的代码为
class ArrayListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
al.add("kk");
al.add("kd");
al.add("kc");
al.add("ka");
ListIterator<String> lit=al.listIterator();
while(lit.hasNext())
{
Object obj=lit.next();
if(obj.equals("kk"))
lit.remove();
}
sop(al);
}
}
复制代码
他会报并发操作异常,因为你在迭代他的同时进行删除操作,这会影响迭代结果,所以编
译器不允许删除操作,java意识到Iterator迭代器的局限性,所以才搞了个ListIterator
的专门操作List集合的迭代器,他封装了remove()方法,内部处理了迭代结果,所以可以
使用ListIterator的remove方法。而集合自己的remove方法就没有内部处理迭代结果,所
以。。。。
作者:
松毛
时间:
2014-1-4 17:30
你的对象用错了!应该用li.add()方法。
import java.util.ArrayList;
import java.util.ListIterator;
public class Test03 {
public static void main(String[] args){
ArrayList<String> al = new ArrayList<String>();
al.add("ab");
al.add("cd");
al.add("ef");
System.out.println(al);
ListIterator<String> li = al.listIterator();
while(li.hasNext()){
Object obj = li.next();
if(obj.equals("cd"))
li.add("hi"); //这里使用迭代器的方法;
}
System.out.println(al);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2