Map<Long, A> aMap = aGateway.getAMap(someRequest);
Map<Integer, B> resultMap = aMap.entrySet()
.stream()
.collect(Collectors.toMap(
entry -> entry.getKey().intValue(),
entry -> someOp(entry.getValue())));
看到这段代码,觉得可以。Java8中先用entrySet
, stream
变为流,再collect
,其中每个entry: toMap
之后,map
过程中getKey
, getValue
获取到每个key和value再进行操作。
本质上是
<K, V> Collector<? super Map.Entry<K, V>, ?, Map<K, V>> toMap() {
return Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue);
}
类似地(参考StackOverflow这个帖子),e.g.
private Map<String, String> mapConfig(Map<String, Integer> input, String prefix) {
int subLength = prefix.length();
return input.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey().substring(subLength),
entry -> AttributeType.GetByName(entry.getValue())));
}