【发布时间】:2014-10-15 10:01:24
【问题描述】:
我只是好奇单个对象上的多个迭代器将如何表现并输入以下代码。
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
class Test{
public static void main(String[] a) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"One");
Iterator<Integer> it1 = map.keySet().iterator();
Iterator<Integer> it2 = map.keySet().iterator();
it1.next();
it1.remove();
System.out.println(it2.hasNext());
System.out.println(it2.next());
System.out.println(map.get(1));
}
}
地图如预期是空的但是,我认为Iterator#hasNext 会返回false,但它却返回了true 和Iterator#next 抛出了ConcurrentModificationException。
当使用Iterator#remove 方法从Collection 中删除一个值时,其他迭代器的hasNext 方法不应该返回false,因为不会返回任何值?
【问题讨论】:
标签: java collections iterator hashmap set