java 大量数据的两个map的value做比较
现在有两个map,每个map的数量是百万级,两个map完全一致。
现在要对比两个map,删除第二个map中和第一个Map的value一致,但是key不一致的第二个之后的数据数据。
举例说明:
map1有<1,a>,<2,b>,<3,a>,<4,b>,<5,c>,<6,d>,<7,a>,<8,c>,<9,c>
map2有<1,a>,<2,b>,<3,a>,<4,b>,<5,c>,<6,d>,<7,a>,<8,c>,<9,c>
执行程序以后,map1不变,map2变为<1,a>,<2,b>,<5,c>,<6,d>
。
我已经有一版代码,思路是两个遍历嵌套,等于是百万*百万的循环。
因为目前这个执行效率太慢,所以想请教一下大家有没有更好的思路或者改进方法。
新增说明:map的value类型是自建函数,不是简单的基本数据类型。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
建一个key和value反转的map
输出
只要再建立一个 value 作为 key 的 map 就好了。从头至尾遍历一遍,也就是 O(n) 的复杂度
Map<String,X> map = new HashMap<>();
// 数据填充好
Map<String,X> tempMap = new HashMap<>();
for(Entry<String,X> entry : map.entrySet()){
}
这样就不用再拿Key去找Value了