热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从Map<A,B>和Map<B,C>创建Map<A,C>。GuavaBiMap的奖励积分

我有Map<A,B>map1并且Map<B,C>map2我需要制作一个Map<A,C

我有Map map1并且Map map2我需要制作一个Map. BiMap如果可能的话,我也想要一个使用番石榴的解决方案。

显然,假设集合 A、B 和 C 之间确实存在双射映射。我想要一个视图,即我不想制作任何元素的副本。

map1并且map2是不可变的。

public static Map merge(map1: Map, maps2: Map) {
// best way to implement?
}

*注意:我更喜欢现有的解决方案,而不是创建自己的解决方案MergedMap implements Map并实现所有方法。

回答


这可以通过Maps.transformValues() 完成

public static Map merge(Map map1, Map map2) {
return Maps.transformValues(map1, map2::get);
}

从文档:

返回地图的视图,其中每个值都由函数转换。地图的所有其他属性,例如迭代顺序,都保持不变。


底层地图的变化反映在此视图中。相反,该视图支持移除操作,这些操作都反映在底层映射中。







推荐阅读
author-avatar
皮皮美2_160
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有