这个问题已经在这里发布了:
How to convert Map<String, String> to Map<Long, String> using guava
我认为CollinD的答案是适当的:
的确如此,但实际上我不明白为什么不这样做,原因是:
在做这些事情时我没有看到缺点吗?
最佳答案
正如@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);