好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于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

查看更多关于关于HashMap相同key累加value的问题的详细内容...

  阅读:10次