高速であるため、繰り返し処理することをお勧めしMap.entrySet()
ます(1つのステップで、キーと値の両方が見つかります)。
Map<String, List<String>> m = Collections.singletonMap(
"list1", Arrays.asList("s1", "s2", "s3"));
for (Map.Entry<String, List<String>> me : m.entrySet()) {
String key = me.getKey();
List<String> valueList = me.getValue();
System.out.println("Key: " + key);
System.out.print("Values: ");
for (String s : valueList) {
System.out.print(s + " ");
}
}
または、Java 8 API(Lambda関数)を使用して同じです。
m.entrySet().forEach(me -> {
System.out.println("Key: " + me.getKey());
System.out.print("Values: ");
me.getValue().forEach(s -> System.out.print(s + " "));
});
または、JavaStreamAPIマッピングのハードコアとメソッドリファレンスを少し使用します:-)
m.entrySet().stream().map(me -> {
return "Key: " + me.getKey() + "\n"
+ "Values: " + me.getValue().stream()
.collect(Collectors.joining(" "));
})
.forEach(System.out::print);
そして、出力は、予想どおり、次のようになります。
キー:list1
値:s1 s2 s3