最近在做统计钱的计算时遇到的一个需求,需要将一个大类别下的每一种钱进行特定的运算然后获得六年的钱,最后将这些钱按照年份进行汇总,获得总得大类型的六年的钱,在这个过程中采用了这种方法,每次算得钱放在map中,然后将map进行合并,写篇随笔mark下。

public class CombineMap {
public static Map<Integer,Integer> addTo(Map<Integer,Integer> target, HashMap<Integer,Integer>plus) {
Object[] os = plus.keySet().toArray();
Integer key;
for (int i=0; i<os.length; i++) {
key = (Integer)os[i];
if (target.containsKey(key))
target.put(key, target.get(key) + plus.get(key));
else
target.put(key, plus.get(key));
}
return target;
}
public static void main(String[] args) {
// 获得arm,body,head,leg,wst
// ......
Map<Integer,BigDecimal> all = new TreeMap<Integer,BigDecimal>();
all.put(2016, new BigDecimal(10));
all.put(2017, new BigDecimal(10));
all.put(2018, new BigDecimal(10));
all.put(2019, new BigDecimal(10));
all.put(2020, new BigDecimal(10));
      Map<Integer,BigDecimal> plus = new HashMap<Integer,BigDecimal>();
plus.put(2016, new BigDecimal(1));
plus.put(2017, new BigDecimal(2));
plus.put(2018, new BigDecimal(3));
plus.put(2019, new BigDecimal(4));
plus.put(2020, new BigDecimal(5));
      all = addTo(all, plus);
all = addTo(all, plus);
List<BigDecimal> tepList;
tepList = new ArrayList<BigDecimal>();
for (Object s : all.keySet()) {
System.out.print("year : " + s);
System.out.println(" values : " + all.get(s).doubleValue());
tepList.add(all.get(s));
}
}
}

map合并,相同键对应的值相加的更多相关文章

  1. scala 两个map合并,key相同时value相加/相减都可

    scala 两个map合并,key相同时value相加 1.map自带的合并操作 2.map函数 2.1示例 2.2合并两个map 3.用foldLeft 3.1 语法 3.2 合并两个map 1.m ...

  2. Python两个字典键同值相加的几种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Jerry_1126/article/de ...

  3. (转载)php 合并数组中的数据,如果键值相等其值相加

    (转载)http://hi.baidu.com/syxrrrr/item/7dfb2387343ce0874414cfdd /* * 合并数据,如果键值相等其值相加 * @param array $d ...

  4. LeetCode 677. Map Sum Pairs 键值映射(C++/Java)

    题目: Implement a MapSum class with insert, and sum methods. For the method insert, you'll be given a ...

  5. js数组去重,id相同对某值相加合并

    js数组去重,id相同对某值相加合并 案例1: 假设需要处理的数组结构. let arr =[ {id:'1', value:10}, {id:'1', value:20}, {id:'2', val ...

  6. PHP合并2个数字键数组的值

    先要了解一个基础知识点:PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧 <?php /** * PHP合并2个数字键数组的值 * * @param arr ...

  7. Map:containsKey、containsValue 获取Map集合的键值的 值

    get(Object key) 返回与指定键关联的值: containsKey(Object key) 如果Map包含指定键的隐射,则返回true: containsValue(Object valu ...

  8. Java: Map里面的键和值可以为空吗?

    在Java中,Map里面的键和值可以为空吗?我们先来看一个例子: private static void TestHashMap() { // TODO Auto-generated method s ...

  9. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

随机推荐

  1. 【Java并发编程】:加锁和volatile变量

    加锁和volatile变量两者之间的区别: 1.volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比syn ...

  2. Eclipse-离线安装Memory Anlysis Tool

    Eclipse版本:Version: Mars.2 Release (4.5.2) 1.从官网下载MAT Memory Anlysis Tool http://www.eclipse.org/mat/ ...

  3. Android_问卷调查

    这个是一个简单的问卷调查,对于我这样的初学者可能会绞尽脑汁想尽办法,去实现一个看起来特别简单的功能,我这个是用Intent传参的办法,来实现将前边的调查来进行统计,并记录,之后将这些信息显示到最后一个 ...

  4. 问题记录 | VScode中使用IntelliJ的快捷键

    问题记录 | VScode中使用IntelliJ的快捷键 主要想用ctrl+alt+l格式化Python代码 安装VScode的插件:IntelliJ IDEA Keybindings 安装方法: I ...

  5. 数据库学习---SQL基础(一)

     数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) SQL(struct query language)结构化查询语言:一种专门与数据库通信的语言, ...

  6. wordcloud+jieba

    Wordcloud各参数含义 font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (de ...

  7. tensorflow summary

    定义summary writer = tf.summary.FileWriter(logdir=self.han_config.log_path, graph=session.graph) 1.sca ...

  8. CART树

    算法概述 CART(Classification And Regression Tree)算法是一种决策树分类方法. 它采用一种二分递归分割的技术,分割方法采用基于最小距离的基尼指数估计函数,将当前的 ...

  9. 面试:TCP和UDP协议

    目录 TCP 协议 UDP协议 TCP和UDP的区别 TCP和UDP的使用场景 一 TCP协议 1.TCP的头部格式 理解TCP协议,首要的就是TCP协议的头部格式 ·        Source P ...

  10. vs2015 活动解决方案或项目由选择的源代码管理插件以外的插件管理

    1.vs2015切换源代码管理插件,svn无法切换到git,点击是将关闭项目 解决方案: 找到项目中.sln 文件,使用编辑器打开,将Svn-Managed = true 设置为false