用于字典的java中的Foreach循环

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

Dictionary LableList = new Dictionary(); foreach (KeyValuePair z in LabelList); 

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

 for(Object z: dic) 

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

我假设您有一个Map ,它是Java内置字典结构。 Java不允许你直接在Map迭代(即它没有实现Iterable ),因为你实际迭代的内容会很模糊。

这只是选择迭代键,值或条目(两者)的问题。

例如

 Map map = new HashMap(); //... for ( String key : map.keySet() ) { } for ( Label value : map.values() ) { } for ( Map.Entry entry : map.entrySet() ) { String key = entry.getKey(); Label value = entry.getValue(); } 

您的C#代码似乎与迭代条目(最后一个示例)相同。

java.util.Map是Dictionary等价的,下面是一个关于如何遍历每个条目的示例

 for(Map.Entry e : map.entrySet()) { System.out.println(e.getKey()+": "+e.getValue()); } 

你最好的选择是用这个:

 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 e : myMap.entrySet()) { // Do what you wish with e.getKey() and e.getValue() } 

建议您不要在官方javadoc中使用Dictionary。

我试图将一个HashMap(a)的内容添加到另一个HashMap(b)中。

我发现以这种方式迭代HashMap很简单:

 a.forEach((k, v) -> b.put(k, v)); 

您可以操纵我的示例,在“ – >”的另一端执行您想要的操作。

请注意,这是一个Lambda表达式,您必须使用Java 1.8(Java 8)或更高版本才能使用它。 🙂