本帖最后由 「AτS」 于 2016-3-24 17:08 编辑
在List接口下的子类集合中,为了避免在迭代过程中用户对集合进行操作(并发修改),有一个特殊的迭代器-listIterator
但是在Set接口下,却没有类似的方法,那么如果发生并发修改,该怎么处理?
先用List特有的listIterator,运行结果:[aa, bb, cc, dd],加入了一个元素
- ArrayList<String> al =new ArrayList<String>();
- al.add("aa");
- al.add("bb");
- al.add("cc");
- ListIterator<String> listit =al.listIterator();
- while(listit.hasNext()){
- String str =listit.next();
- System.out.println(str);
- if(str.equals("cc")){
- listit.add("dd");
- }
- }
- System.out.println(al);
复制代码 但是set接口的就不可以
- HashSet<String> hs =new HashSet<String>();
- hs.add("aaa");
- hs.add("bbb");
- hs.add("ccc");
-
- Iterator<String> it =hs.iterator();
- while (it.hasNext()){
- System.out.println(it.next());
- hs.add("ddd");
- }
复制代码
|
|