无法将foreach从C#转换为Java

Rap*_*rel -4 c# java search-engine key-value code-translation

我正在尝试翻译布尔检索模型搜索引擎,无法将这段代码翻译成Java.

C#:

foreach(KeyValuePair<string ,List<string>> p in documentCollection){}
Run Code Online (Sandbox Code Playgroud)

Java的:

for(Map<String, ArrayList<String>> p : documentCollection){}
Run Code Online (Sandbox Code Playgroud)

不幸的是Java给了我这个错误:

for-each不适用于应用程序类型

提前致谢!

das*_*ght 6

C#IDictionary<K,V>和Java的集合接口的实现方式有所不同Map<K,V>.在C#中,可以枚举集合本身的键值对; 在Java中,您必须调用方法来获取键值集,该键值集称为entrySet():

for (Map.Entry<String,ArrayList<String>> p : documentCollection.entrySet()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,在Java中,您迭代Map.Entry<K,V>对象而不是C#KeyValuePair<K,V>.