在 java 8 中以 List 的值遍历地图

Iterate over a map with values as List in java 8

遍历 Map<Integer, List<String>> 并转换为类型 List<KeyPair>。 java 8(使用流)中的任何更好的方法。

天真的方式:

final List<KeyPair> keyPairs = Lists.newArrayList();
 for (final Map.Entry<Integer, List<String>> entry : map.entrySet()) {
            for (final String value : entry.getValue()) {
                keyPairs.add(new KeyPair()
                .withHashKey(value)
                .withRangeKey(entry.getKey()));
            }
   }

首先,遍历地图条目集,然后您可以使用 flatMap 作为地图键的值列表,并使用条目键和列表的每个值创建 KeyPair 并收集为列表.

List<KeyPair> keyPairs = map.entrySet()
       .stream()
       .flatMap(entry -> entry.getValue()
                              .stream()
                              .map(value -> new KeyPair()
                                               .withHashKey(value)
                                               .withRangeKey(entry.getKey())))
       .collect(Collectors.toList());