【问题标题】:adding value if key is same in hashmap arraylist如果哈希映射数组列表中的键相同,则添加值
【发布时间】:2018-05-24 07:59:54
【问题描述】:

如果键相同,我在添加 hashmap arraylist 的值时遇到问题。我有一个数组列表作为

ArrayList<HashMap<String, Integer>> expense = new ArrayList<HashMap<String, Integer>>();

输出如下

{食物 = 300},

{娱乐 = 100},

{食物 = 500}

我想创建一个新的 hashmap 数组列表

ArrayList<HashMap<String, Integer>> newExpense = new ArrayList<HashMap<String, Integer>>();

并存储

{食物= 800},

{娱乐 = 100}

我已经尝试过嵌套循环,但它没有工作。有人可以帮我吗?

【问题讨论】:

  • 为什么你有那个 HashMaps 列表呢?一个简单的HashMap&lt;String, Integer&gt;(以项目名称为键)似乎更符合您的要求。

标签: java android arraylist hashmap


【解决方案1】:

你可以有一个简单的哈希图...

将值放入 hashmap 时,请使用此代码..

if (map.containsKey(key))
        map.put(key, map.get(key) + newValue);
    else
        map.put(key, newValue);

虽然不推荐,但如果你因为自己的原因还需要这样做的话.. 这可能是在哈希图中获取新费用的逻辑..

        ArrayList<HashMap<String, Integer>> expense = new ArrayList<HashMap<String, Integer>>();        
        HashMap<String, Integer> newExpense = new HashMap<>();
        for(HashMap<String, Integer> oldExpense : expense)
        {
            for(String key : oldExpense.keySet())
            {
                if (newExpense.containsKey(key))
                    newExpense.put(key, newExpense.get(key) + oldExpense.get(key));
                else
                    newExpense.put(key, oldExpense.get(key));
            }
        }
        System.out.println(newExpense.toString());

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 2014-06-19
    • 1970-01-01
    • 2015-12-26
    • 2016-06-30
    • 1970-01-01
    • 2018-11-13
    • 2013-02-24
    • 2018-12-28
    相关资源
    最近更新 更多