如何循环访问 Java 链接哈希映射?

2022-09-03 03:42:53

我搜索了这个问题,并找到了使用Map.Entry的答案,就像这里一样,但是getValue()方法返回了一个Object对象,而不是map中的对象类型。就像下面的示例一样,我需要它来返回 User 对象,以便我可以使用该类中的方法。但是,当我尝试使用下面的 while 循环时,它永远不会离开循环。我想知道这样做的正确方法。

Map<String, User> users = new LinkedHashMap<String, User>();
users.put(name, user);

while(users.values().iterator().hasNext()){

   currentUser = users.values().iterator().next();
   currentUser.someMethod();
}

答案 1

我想知道这样做的正确方法。

您应该使用该类型;您只需要提供类型参数以用于泛型:Map.Entry

for (Map.Entry<String,User> entry : users.entrySet()) {
    // entry.getValue() is of type User now
}

答案 2

你滥用了迭代器,你忽略了泛型规范。

Iterator<User> it = users.values().iterator();
while (it.hasNext())
{
  User currentUser = it.next();
  currentUser.someMethod();
}

推荐