Foreach循环在java for Dictionary

时间:2012-02-21 03:19:24

标签: java dictionary for-loop

我想浏览java中字典中的每个项目。澄清我想做什么,这是C#代码

Dictionary<string, Label> LableList = new Dictionary<string, Label>();
foreach (KeyValuePair<string, Label> z in LabelList);

我不知道如何做到这一点是java,例如我做了这个

for(Object z: dic)

但它说它不可迭代。请指教......

4 个答案:

答案 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)或更高版本才能使用它。 : - )