有没有更好的方法使用Java流映射地图值?

时间:2018-06-18 10:54:41

标签: java collections guava

基本上,更好的写作方式:

Map<String, String> originalMap = getMapOfValues();
Map<String, String> newMap = originalMap.entrySet()
    .stream()
    .map(entry ->
        Maps.immutableEntry(entry.getKey(), mapValue(entry.getValue()))
    ).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue);

Maps.immutableEntry是来自番石榴的方法)

2 个答案:

答案 0 :(得分:8)

为什么需要将您的参赛作品映射到Maps.immutableEntry()?您可以跳过该步骤:

Map<String, String> originalMap = getMapOfValues();
Map<String, String> newMap = 
    originalMap.entrySet()
               .stream()
               .collect(Collectors.toMap(Map.Entry::getKey,
                                         entry -> mapValue(entry.getValue())));

答案 1 :(得分:3)

不使用Streams,您可以执行以下操作:

Map<String, String> originalMap = getMapOfValues();
Map<String, String> newMap = new HashMap<>(originalMap);
newMap.replaceAll((key, value) -> mapValue(value));