在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时遇到了什么问题?您认为当前方法存在什么问题?