在 Java 中的相同键 HashMap 下添加值

Adding values under same key HashMap in Java

我是 HashMaps 的新手,我想知道是否有一种方法可以将具有相同键的值相加。

例如,当我有键 'a' 并且值为 20 并且稍后我再次使用键 'a' 并且值为 10 时值现在应该为 30.

我不知道如何检查该值是否已在 HashMap 中,然后再次使用相同的值。添加部分可以只用一个复制当前值并添加新值的变量来完成,我猜。

我猜你想要一个字符与整数的 hashmap,并且想要将整数添加到已经存在的值中,以防值为 present.You 可以执行如下操作:

public hashMapImpl(char ch, int number){
    Map<Character,Integer> map = new HashMap<>();
    if(map.containsKey(ch)){
        map.put(ch, map.get(ch)+number);
    }
    else{
        map.put(ch,number);
    }
}

其中 ch 将是您的密钥,而 number 将是您要存储在特定密钥的内容。

我将使用一个名为 HashMapExamle 的示例 class 来解释这一点。 在 class 中,我将创建一个名为 bigHashMapHashMap,假设这是您使用先前数据的初始 hashMap

我还有一个 main method 可以调用可以解决您的问题的方法。我已将该方法命名为 bigHashMap。所以对于初学者来说,我已经初始化了我们之前的 HashMap 命名为 bigHashMap 并用一些新的 key-value 对初始化机智

我将打印出HashMap 的值。然后我将添加一个具有相同键的值,在本例中为 food,值为 15,通过调用 hashMapValueAdd 方法我已经创建并将键(食物)和值(15)传递给它。

方法的概念是:

  1. 检查 HashMap 是否包含键。
  2. 如果它有它,它会得到那个ky的值,并向它添加新的值。然后它将用新值替换键处的值。
  3. 如果在 hashmap 中找不到密钥,则将插入新的 key-value 对。

class哈希映射示例{
    private static HashMap<String, Integer> bigHashMap;

    public static void main(String[] args) {

        bigHashMap = new HashMap<>();

        // Add test data
        bigHashMap.put("food", 200);
        bigHashMap.put("transport", 20);
        bigHashMap.put("entertainment", 40);

        System.out.println("Data before : \n" + bigHashMap);

        hashmapValueAdd("food", 15);

        System.out.println("Data after : \n" + bigHashMap);
    }

    private static void hashmapValueAdd(String key, int value) {

        // Check if hashMap contains the given key
        if (bigHashMap.containsKey(key)) {

            // Get previous value with the same key
            int valueWithSameKey = bigHashMap.get(key);

            // Increment the value with incoming value
            int newValue = valueWithSameKey + value;

            // Put updated value into HashMap
            // bigHashMap.put(key, +value);
            bigHashMap.replace(key, newValue);

        } else {

            // Put the current key since it does not exist in the HashMap
            bigHashMap.put(key, value);
        }
    }
}

希望这能解决您的问题。

您可以查看这些 HashMap 解释以获得更好的理解。

  1. Java HashMap - W3Schools
  2. Java MAp - Jakob Jenkov
  3. Java HashMap replace()
  4. Update the Value Associated With a Key in a HashMap

如果键存在,您可以使用计算方法add/sum一个值,或者如果键不存在,则创建一个新条目。

Map<String, Integer> map =  new HashMap<>();

String myKey = "a";
Integer myValue = 10;

map.compute(myKey, (key, value) -> {
   if (value == null)
      return myValue;
   else
      return value + myValue;
   }
);

System.out.println(map);

map.compute(myKey, (key, value) -> {
   if (value == null)
      return myValue;
   else
      return value + myValue;
   }
);

System.out.println(map);

输出:

a={10}
a={20}

当然,将这个计算逻辑放在一个方法中会让你的代码更干净:)