[英]Java - Get map values by arrayList
我有一个疑问,为什么我不能获得这个价值
HashMap<String, P> users = new HashMap<String, P>();
users.put("john", new P("john"));
List<String> arenaUsers = new ArrayList<String>();
arenaUsers.add("john");
for (String user : arenaUsers) {
for (P p : users.get(user)) {
System.out.println(p.getName());
}
}
我收到错误消息:
Can only iterate over an array or an instance of java.lang.Iterable
但是我无法迭代Map
,该如何解决?
在Map中,只有一个键会得到一个值,这就是“只能迭代数组或java.lang.Iterable的实例”的原因,这是在第二个for循环中发生的,因为它是唯一的一个值
for (P p : users.get(user))
而是这样做:
for (String user : arenaUsers) {
if(users.containsKey(user))
System.out.println(users.get(user).getName());
}
}
在这里,您的p
类没有实现Iterable
因此不能在for
循环内使用。 所以要在循环中使用它for
您需要实现Iterable
或使用已经实现Iterable
的现有collection
,即
Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> l =new ArrayList<String>();l.add("stack");l.add("overflow");
map.put("trying", l);
for(String ss: map.get("trying")){
System.out.println(ss);
}
在这里,我使用了实现Iterable
List
,并且可以在for循环中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.