黑马程序员技术交流社区
标题:
关于迭代器并发异常的疑问。
[打印本页]
作者:
Piaget
时间:
2015-2-6 20:29
标题:
关于迭代器并发异常的疑问。
本帖最后由 Piaget 于 2015-2-11 00:48 编辑
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.HashSet;
import java.util.Set;
public class TestRemove
{
public static void main(String[] args)
{
Set<String> hsSet = new HashSet<String>();
hsSet.add("abc");
hsSet.add("aabac");
hsSet.add("abc");
hsSet.add("afc");
Iterator<String> iterator = hsSet.iterator();
while (iterator.hasNext())
{
if (iterator.next().equals("abc"))
{
hsSet.remove(iterator.next());//为什么这里没有并发异常呢???
}
}
System.out.println(hsSet);
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("sd");
list.add("abc");
list.add("oc");
/*Iterator<String> it = list.iterator();
while (it.hasNext())
{
if (it.next().equals("abc"))
{
list.remove("abc");//这里会有并发异常。
}
}*/
System.out.println(list);
}
}
复制代码
作者:
qq8921310
时间:
2015-2-9 11:10
在迭代器里值能用迭代器的方法,用集合的方法会出现并发异常
作者:
qq8921310
时间:
2015-2-10 09:37
一定会出现,你如果把第一个改成“abc”的话,一样会出现异常的、
作者:
ziyu0971
时间:
2015-2-10 12:31
qq8921310 发表于 2015-2-9 11:10
在迭代器里值能用迭代器的方法,用集合的方法会出现并发异常
是这样。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2