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

目录
  • HashMap相同key累加value
  • HashMap解决key值相同问题

HashMap相同key累加value

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可以直接累加,脚本如下

#!/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存

如下:

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里面。思路大概是这样的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 为什么ConcurrentHashMap的key value不能为null,map可以?

    源码 if (key == null || value == null) throw new NullPointerException(); 二义性 假定ConcurrentHashMap也可以存放value为null的值.那不管是HashMap还是ConcurrentHashMap调用map.get(key)的时候,如果返回了null,那么这个null, 都有两重含义: 1.这个key从来没有在map中映射过. 2.这个key的value在设置的时候,就是null. 为什么map允许value

  • HashMap实现保存两个key相同的数据

    HashMap如何保存两个key相同的数据 最近一个朋友去面试了,面试官问了一个关于HashMap的问题:HashMap如何保存两个key相同的数据? 准确来说,应该是Map中如何保存两个key相同的数据,因为用来实现这个功能的IdentityHashMap类和HashMap虽然都是实现了Map接口,但本质是属于不同的东西: 我们知道在HashMap中,如果key相同就会被覆盖,那IdentityHashMap是怎么实现这个功能的呢? java jdk源码中,IdentityHashMap类上写

  • java8 Stream list to Map key 重复 value合并到Collectio的操作

    java8 Stream list to Map key 重复 value合并到Collectio 关于把list转换成key value的map有很多博客上都有实现,这里是一个把value放入到集合中去 List<String> list = Lists.newArrayList("1", "2", "3", "1"); Map<String, List<String>> map = li

  • 自定义对象作为HashMap的Key问题

    目录 自定义对象作为HashMap的Key 首先我们自定义一个学生对象,它有姓名和年龄两个字段. HashMap使用自定义对象作为Key的注意点 1. 自定义对象不重写hashCode方法和equals会发生什么? 2. 在HashMap中使用自定义对象作为key会发生什么? 3. 重写hashCode方法和equals方法的原则 自定义对象作为HashMap的Key 这个问题在很多面试者面试时都会被提及,本人也是最近在看effective java第九条:覆盖equals时总要覆盖hashco

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

    目录 HashMap相同key累加value HashMap解决key值相同问题 HashMap相同key累加value 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"

  • Java用自定义的类作为HashMap的key值实例

    这是Java中很经典的问题,在面试中也经常被问起.其实很多书或者文章都提到过要重载hashCode()和equals()两个方法才能实现自定义键在HashMap中的查找,但是为什么要这样以及如果不这样做会产生什么后果,好像很少有文章讲到,所以写这么一篇来说明下. 首先,如果我们直接用以下的Person类作为键,存入HashMap中,会发生发生什么情况呢? public class Person { private String id; public Person(String id) { thi

  • Java中HashMap里面key为null存放到哪

    我们知道HashMap集合是允许存放null值的 hashMap是根据key的hashCode来寻找存放位置的,那当key为null时, 怎么存储呢? 在put方法里头,其实第一行就处理了key=null的情况. // HashMap的put方法 public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) // key为null调用putForNull

  • 为什么不建议使用Java自定义Object作为HashMap的key

    目录 前言 踩坑历程回顾 hashCode覆写的讲究 为什么hashCode和equals要同时覆写 数据退出机制的兜底 总结 前言 此前部门内的一个线上系统上线后内存一路飙高.一段时间后直接占满.协助开发人员去分析定位,发现内存中某个Object的量远远超出了预期的范围,很明显出现内存泄漏了. 结合代码分析发现,泄漏的这个对象,主要存在一个全局HashMap中,是作为HashMap的Key值.第一反应就是这里key对应类没有去覆写equals()和hashCode()方法,但对照代码仔细一看却

  • 浅谈HashMap、HashTable的key和value是否可为null

    结论: HashMap对象的key.value值均可为null. HahTable对象的key.value值均不可为null. 且两者的的key值均不能重复,若添加key相同的键值对,后面的value会自动覆盖前面的value,但不会报错. public class Test { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>();//Has

  • HashMap插入相同key问题

    目录 HashMap插入相同key HashMap插入的描述 我的问题 想法 HashMap的key能不能重复 我们看看实际代码 说下重点 HashMap插入相同key HashMap插入的描述 使用HashMap在插入操作时,会通过equal方法判断key是否相同.如果相同,则将覆盖对应的value:不相同才使用新的“桶”. 我的问题 当往HashMap中插入数据,即使有相同的key,但是能不能不进行覆盖操作,而是把新的value放在原有的value附近能够找到的位置? 想法 呃,其实大概方向

  • 重载toString实现JS HashMap分析

    不过请仔细对比一下,你会发现其中差别还是很大的.Java HashMap的key是Object类型,所以可以任何类型的参数,而JS的key只能是字符串或是数字. 你也许会说,obj={};map[obj]=1;这段代码传入了既不是数字也不是字符的key,但也没发生错误啊.那是因为解释器将obj对象通过内置的toString方法转换成"[object Object]"这段字符了,你可以用for each下map看看.而java之所以能够接受任何类型的key,是因为其Object实现了Ha

  • java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较

    java 中HashMap.HashSet.TreeMap.TreeSet判断元素相同的几种方法比较 1.1     HashMap 先来看一下HashMap里面是怎么存放元素的.Map里面存放的每一个元素都是key-value这样的键值对,而且都是通过put方法进行添加的,而且相同的key在Map中只会有一个与之关联的value存在.put方法在Map中的定义如下. V put(K key, V value); 它用来存放key-value这样的一个键值对,返回值是key在Map中存放的旧va

  • Java开发之HashMap的使用和遍历

    Java开发之HashMap的使用和遍历 1:使用HashMap的一个简单例子 package com.pb.collection; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import java.util.Map.Entry; public class HashMapDemo { public static void main(String[] args) { HashMap<Stri

随机推荐