服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 关于HashMap相同key累加value的问题

关于HashMap相同key累加value的问题

2022-12-02 17:24ample笔记 Java教程

这篇文章主要介绍了关于HashMap相同key累加value的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

HashMap相同key累加value

?
1
2
3
4
5
6
7
8
9
10
11
import java.util.HashMap;
import java.util.Map;
public class Test {
    public static void main(String[] args) {
        Map<String, Long> map = new HashMap<String, Long>();
        map.put("k", 1L);
        map.put("k", 2L);
        map.put("k", 3L);
        System.out.println(map);
    }
}

得到的结果是{k=3}。

scala语言结果同上。

而脚本语言perl可以直接累加,脚本如下

?
1
2
3
4
5
6
7
8
#!/usr/bin/perl
use strict;
use Data::Dumper;
my %map;
$map{"k"}+=1;
$map{"k"}+=2;
$map{"k"}+=3;
print Dumper(\%map);

得到的结果是

$VAR1 = {
‘k’ => 6
};

HashMap解决key值相同问题

某些场景需要一个key值下面对应多个值,但是map的一个key值只对应一个value值,由于hashmap相同的key值,第二个put进去会覆盖第一个的值

为了解决这一问题:所以用list存

如下:

?
1
2
3
4
5
6
7
8
9
10
List<Map<String, List<RecommendationListBO>>> hashList = new ArrayList<>();
Iterator<Map.Entry<String, List<RecommendationListBO>>> iterator = recommendationHashMap.entrySet().iterator();
Map.Entry<String, List<RecommendationListBO>> entry;
while (iterator.hasNext()) {
    entry = iterator.next();
    // 往newMap中放入新的Entry
    HashMap<String, List<RecommendationListBO>> newMap = new LinkedHashMap<>();
    newMap.put(entry.getKey().split(",")[0], entry.getValue());
    hashList.add(newMap);
}

每次new一个新的map,add到map的list里面。思路大概是这样的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_41240580/article/details/103366717

延伸 · 阅读

精彩推荐