我有 Map<A, B> map1
以及 Map<B, C> map2
我需要制作一个 Map<A, C>
. 我还想要一个用Guava汁的解决方案 BiMap
如果可能的话。
显然,假设集合a、b和c之间确实存在一个双射Map。我想要一个视图,也就是说我不想复制任何元素。 map1
以及 map2
是不变的。
public static <A, B, C> Map<A, C> merge(map1: Map<A, B>, maps2: Map<B, C>) {
// best way to implement?
}
- 注意:比起创建自己的解决方案,我更喜欢现有的解决方案
MergedMap<A, B, C> implements Map<A, C>
实现所有的方法。
2条答案
按热度按时间pb3skfrl1#
这可以通过maps.transformvalues()完成
根据文件:
返回由函数转换每个值的Map视图。Map的所有其他属性(如迭代顺序)保持不变。
基础Map中的更改反映在该视图中。相反,此视图支持删除操作,这些操作反映在基础Map中。
z9gpfhce2#
你可以用
Collectors.toMap
将条目流设置为转换值。