A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Piaget 中级黑马   /  2015-2-6 20:29  /  1178 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Piaget 于 2015-2-11 00:48 编辑
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;
  4. import java.util.HashSet;
  5. import java.util.Set;

  6. public class TestRemove
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 Set<String> hsSet = new HashSet<String>();
  11.                 hsSet.add("abc");
  12.                 hsSet.add("aabac");
  13.                 hsSet.add("abc");
  14.                 hsSet.add("afc");
  15.                 Iterator<String> iterator = hsSet.iterator();
  16.                 while (iterator.hasNext())
  17.                 {
  18.                         if (iterator.next().equals("abc"))
  19.                         {
  20.                                 hsSet.remove(iterator.next());//为什么这里没有并发异常呢???
  21.                         }
  22.                 }
  23.                 System.out.println(hsSet);
  24.                 List<String> list = new ArrayList<String>();
  25.                 list.add("abc");
  26.                 list.add("sd");
  27.                 list.add("abc");
  28.                 list.add("oc");
  29.                 /*Iterator<String> it = list.iterator();
  30.                 while (it.hasNext())
  31.                 {
  32.                         if (it.next().equals("abc"))
  33.                         {
  34.                                 list.remove("abc");//这里会有并发异常。
  35.                         }
  36.                 }*/
  37.                 System.out.println(list);
  38.         }
  39.         
  40. }
复制代码

4 个回复

倒序浏览
在迭代器里值能用迭代器的方法,用集合的方法会出现并发异常

点评

那是可能出现并发异常还是一定会出现?? 上边代码第一个注释的地方没有出现 下边的却出现了并发异常。  发表于 2015-2-9 21:02
回复 使用道具 举报 1 0
一定会出现,你如果把第一个改成“abc”的话,一样会出现异常的、
回复 使用道具 举报
qq8921310 发表于 2015-2-9 11:10
在迭代器里值能用迭代器的方法,用集合的方法会出现并发异常

是这样。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马