在同步方法中使用时的哈希图迭代器



假设我有一个哈希图,看起来像:

键:值

(字符串 1,队列 1)

(字符串 2,队列 2)

(字符串 3,队列 3)

我还有一个将访问此哈希图的同步方法,并在该方法内部创建了一个迭代器:

 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)?

调用 iterator() 会创建一个位于集合开头的新迭代器,因此它将始终为您提供 Map 实现的第一个条目。

使用 HashMap 时,排序是未定义的,但您可以使用其他 Map 实现来控制排序(LinkedHashMap、TreeMap 等)

最新更新