所以,让我们说我有一个看起来像的Hashmap:
键:值
(字符串1,队列1)
(字符串2,队列2)
(字符串3,队列3)
我还有一个将访问此hashmap的synchronized方法,并在方法内创建一个迭代器:
Iterator it = hashmap.iterator();
while(it.hasNext()){
Queue q = it.next();
QueueItem item = q.get(0);
return item;
}
现在我有2个线程调用此方法,当线程1调用时,它将获得一个指向(字符串1,队列1)的迭代器;我的问题是当线程2调用时,迭代器是指向(字符串1,队列1)还是(字符串2,队列2)?
答案 0 :(得分:3)
调用 iterator()会在集合的开头创建一个 new 迭代器,因此它总是会为您提供Map实现的第一个条目。
使用HashMap时,未定义排序,但您可以使用其他Map实现来控制排序(LinkedHashMap,TreeMap,...)