首页 > 解决方案 > 当两种类型不同时如何将一个哈希映射的值放入另一个哈希映射

问题描述

地图 1:-

Map<String, List<Long>> prjReleaseMap = (Map<String, List<Long>>) configMap.get(PROJECTRELEASEMAP);

地图 2:-

Map<Long, List<Long>> newprjReleaseMap = new HashMap<>();

我想将地图 1 的值放在地图 2 中。

标签: javahashmap

解决方案


如果您使用的是 Java 8,则可以使用:

Map<Long, List<Long>> newprjReleaseMap = prjReleaseMap.entrySet().stream()
        .collect(Collectors.toMap(k -> Long.parseLong(k.getKey()), Map.Entry::getValue));

我假设所有的键都可以转换为 Long。


如果您只想获取密钥有效的条目,您可以使用过滤器,如下所示:

Map<Long, List<Long>> newprjReleaseMap = prjReleaseMap.entrySet().stream()
        .filter(k -> checkKey(k.getKey()))
        .collect(Collectors.toMap(k -> Long.parseLong(k.getKey()), Map.Entry::getValue));

...

public static boolean checkKey(String value) {
    try {
        Long.parseLong(value);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

推荐阅读