Java 8允许使用Map
和lambda表达式对forEach
进行迭代,如下所示:
myMap.forEach((k, v)->{ System.out.println("Key: " + k + " Value: " + v); });
是否可以使用MultivaluedMap
和lambda表达式迭代forEach
?
UDPATE
如何使用foo
的2个String
参数调用MultivaluedMap<String, String>
?
myMultiMap.forEach((k, v)->{ foo(k, v); });
答案 0 :(得分:4)
接口MultivaluedMap<K, V>
扩展了Map<K,List<V>>
接口,因此,有forEach
方法,可以使用它。
new MultivaluedHashMap<String, String>()
.forEach((String key, List<String> list)-> { ... });
我不知道你的foo
方法做了什么,但我建议*考虑我的观点:
public <K, V> void foo(K key, V... values) { ... }
在这种情况下,你不需要在lambda中写内部forEach
*(在评论中解释@Holder是错误的)
所以,只有一种正确的方法:
map.forEach((k, l) -> l.forEach( v -> foo(k, v)));
答案 1 :(得分:0)
感谢Andrew Tobilko's answer我能够弄明白我想要的东西。
可以按如下方式在一行中完成:
myMultiMap.forEach((k, v)->{ v.forEach(item-> foo(k, item)); });