在Java8中使用列表中的值迭代映射

在Java8中使用列表中的值迭代映射,java,java-8,hashmap,java-stream,Java,Java 8,Hashmap,Java Stream,迭代映射并转换为类型列表。在Java8中(使用流)有没有更好的实现方法 天真的方式: final List<KeyPair> keyPairs = Lists.newArrayList(); for (final Map.Entry<Integer, List<String>> entry : map.entrySet()) { for (final String value : entry.getValue()) {

迭代
映射
并转换为类型
列表
。在Java8中(使用流)有没有更好的实现方法

天真的方式:

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()));
            }
   }
final List keyPairs=Lists.newArrayList();
对于(最终Map.Entry:Map.entrySet()){
for(最终字符串值:entry.getValue()){
添加(新的密钥对()
.withHashKey(值)
.withRangeKey(entry.getKey());
}
}

首先,迭代地图入口集,然后可以使用地图键的值列表使用
flatMap
,并使用entry键和列表的每个值创建
KeyPair
,并将其收集为列表

List<KeyPair> keyPairs = map.entrySet()
       .stream()
       .flatMap(entry -> entry.getValue()
                              .stream()
                              .map(value -> new KeyPair()
                                               .withHashKey(value)
                                               .withRangeKey(entry.getKey())))
       .collect(Collectors.toList());
List keyPairs=map.entrySet()
.stream()
.flatMap(条目->条目.getValue()
.stream()
.map(值->新密钥对()
.withHashKey(值)
.withRangeKey(entry.getKey()))
.collect(Collectors.toList());

首先,迭代地图入口集,然后可以使用地图键的值列表使用
flatMap
,并使用entry键和列表的每个值创建
KeyPair
,并将其收集为列表

List<KeyPair> keyPairs = map.entrySet()
       .stream()
       .flatMap(entry -> entry.getValue()
                              .stream()
                              .map(value -> new KeyPair()
                                               .withHashKey(value)
                                               .withRangeKey(entry.getKey())))
       .collect(Collectors.toList());
List keyPairs=map.entrySet()
.stream()
.flatMap(条目->条目.getValue()
.stream()
.map(值->新密钥对()
.withHashKey(值)
.withRangeKey(entry.getKey()))
.collect(Collectors.toList());

您在使用streams时遇到了什么问题?您认为当前方法存在什么问题?您在使用streams时遇到了什么问题?您认为当前方法存在什么问题?