这个问题已经在这里发布了:
How to convert Map<String, String> to Map<Long, String> using guava

我认为CollinD的答案是适当的:



的确如此,但实际上我不明白为什么不这样做,原因是:

  • 发生 key 转换时,如果“合并”了两个 key ,则可能引发运行时异常,或者我们可以传递一个标志来指示Guava为新计算的 key 采用多个可能值中的任何值(故障/故障安全)可能性)
  • 我们可以有一个Maps.transformKeys来产生一个多图

  • 在做这些事情时我没有看到缺点吗?

    最佳答案

    正如@CollinD所建议的那样,没有办法以懒惰的方式执行此操作。要实现get,您必须使用转换函数转换所有键(以确保发现任何重复项)。

    因此,将Function<K,NewK>应用于Map<K,V>了。

    您可以安全地将Function<NewK,K>应用于 map :

    V value = innerMap.get( fn.apply(newK) );
    

    我没有看到Guava的简写-它可能不够有用。您可以通过以下方式获得类似的结果:
    Function<NewK,V> newFn = Functions.compose(Functions.forMap(map), fn);
    

    07-24 09:50
    查看更多