如何求两个键相同的map对应value的差值?
利用merge()函数。
Map
map1.forEach((key,value)->mapDifference.merge(key,value,(v1,v2)->v2-v1));
示例如下:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
class Test {
public static void main(String args[]){
Map<String,Integer> map1= new HashMap<>();
Map<String,Integer> map2= new HashMap<>();
map1.put("aaa",8); map1.put("bbb",7); map1.put("ccc",5);
map2.put("aaa",5); map2.put("bbb",9); map2.put("ccc",1);
//map1-map2
Map<String,Integer> mapDifference= new HashMap<>(map2);
map1.forEach((key,value)->mapDifference.merge(key,value,(v1,v2)->v2-v1));
//打印结果
for (Map.Entry<String, Integer> entry : mapDifference.entrySet()) {
System.out.println(entry.getKey()+ ":" + entry.getValue());
}
}
}
输出结果如下:aaa:3
ccc:4
bbb:-2
如上输出结果,发现并没有按照添加顺序输出,要想按照添加顺序输出,可以用LinkedHashMap。这一点要特别注意,工作中经常碰到,比如获取一年12个月的某数据,展示到Echart图中,当前端同事将月份写死时,如果后端不注意数据的返回顺序,那前端页面上各个月份的数据就容易出错啦!!!
还没有评论,来说两句吧...