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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 「AτS」 中级黑马   /  2016-3-24 16:48  /  906 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 「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.                 }
复制代码



1 个回复

倒序浏览
哪位大神可以解答一下吗?谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马