我想浏览java中字典中的每个项目。澄清我想做什么,这是C#代码
Dictionary<string, Label> LableList = new Dictionary<string, Label>();
foreach (KeyValuePair<string, Label> z in LabelList);
我不知道如何做到这一点是java,例如我做了这个
for(Object z: dic)
但它说它不可迭代。请指教......
答案 0 :(得分:34)
我假设您有一个Map<String, Label>
,它是Java内置字典结构。 Java不允许你直接在Map
上进行迭代(即它没有实现Iterable
),因为你实际迭代的内容是不明确的。
这只是选择迭代键,值或条目(两者)的问题。
e.g。
Map<String, Label> map = new HashMap<String, Label>();
//...
for ( String key : map.keySet() ) {
}
for ( Label value : map.values() ) {
}
for ( Map.Entry<String, Label> entry : map.entrySet() ) {
String key = entry.getKey();
Label value = entry.getValue();
}
您的C#代码似乎与迭代条目(最后一个示例)相同。
答案 1 :(得分:5)
java.util.Map
是字典等价的,以下是关于如何遍历每个条目的示例
for(Map.Entry<K, V> e : map.entrySet())
{
System.out.println(e.getKey()+": "+e.getValue());
}
答案 2 :(得分:1)
您最好的选择是:
for (String key : LableList.keys()) {
Label value = LableList.get(key);
// do what you wish with key and value here
}
在Java中,更好的选择是不像在.NET中那样使用Dictionary,而是使用其中一个Map子类,例如: HashMap中。您可以像这样迭代其中一个:
for (Entry<String, Label> e : myMap.entrySet()) {
// Do what you wish with e.getKey() and e.getValue()
}
建议您不要在官方的javadoc中使用Dictionary。
答案 3 :(得分:1)
我试图将一个HashMap(a)的内容添加到另一个HashMap(b)中。
我发现以这种方式迭代HashMap很简单:
a.forEach((k, v) -> b.put(k, v));
您可以操纵我的示例,在“ - &gt;”的另一端执行您想要的操作。
请注意,这是一个Lambda表达式,您必须使用Java 1.8(Java 8)或更高版本才能使用它。 : - )