黑马程序员技术交流社区

标题: 关于Set集合并发修改问题 [打印本页]

作者: 「AτS」    时间: 2016-3-24 16:48
标题: 关于Set集合并发修改问题
本帖最后由 「AτS」 于 2016-3-24 17:08 编辑

在List接口下的子类集合中,为了避免在迭代过程中用户对集合进行操作(并发修改),有一个特殊的迭代器-listIterator
但是在Set接口下,却没有类似的方法,那么如果发生并发修改,该怎么处理?
先用List特有的listIterator,运行结果:[aa, bb, cc, dd],加入了一个元素
  1. ArrayList<String> al =new ArrayList<String>();
  2.                 al.add("aa");
  3.                 al.add("bb");
  4.                 al.add("cc");
  5.                 ListIterator<String> listit =al.listIterator();
  6.                 while(listit.hasNext()){
  7.                         String str =listit.next();
  8.                         System.out.println(str);
  9.                         if(str.equals("cc")){
  10.                                 listit.add("dd");
  11.                         }
  12.                 }
  13.                 System.out.println(al);
复制代码
但是set接口的就不可以
  1. HashSet<String> hs =new HashSet<String>();
  2.                 hs.add("aaa");
  3.                 hs.add("bbb");
  4.                 hs.add("ccc");
  5.                
  6.                 Iterator<String> it =hs.iterator();
  7.                 while (it.hasNext()){
  8.                         System.out.println(it.next());
  9.                         hs.add("ddd");
  10.                 }
复制代码




作者: 「AτS」    时间: 2016-3-25 10:05
哪位大神可以解答一下吗?谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2