如何使用forEach和lambda表达式迭代MultivaluedMap

时间:2016-06-15 10:01:07

标签: java foreach lambda java-8

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); });

2 个答案:

答案 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)); });