关于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里面。思路大概是这样的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
为什么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
随机推荐
- Linux使用一个定时器实现设置任意数量定时器功能
- admin.vbs 以管理员身份运行程序的vbs命令
- 详解C语言中symlink()函数和readlink()函数的使用
- CentOS6.2上安装Oracle10g报ins_emdb.mk错误处理方法
- Asp.net下使用Jquery Ajax传送和接收DataTable的代码
- c#与js随机数生成方法
- Win7 ASP连接数据库“未找到提供程序.该程序可能未正确安装”问题
- 详解Golang编程中的常量与变量
- Android listView 绘制表格实例详解
- 用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
- javascript实现类似超链接的效果
- node.js中的http.response.end方法使用说明
- 真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法
- apache中通过mod_rewrite实现伪静态页面的方法
- Java中对象的销毁方法分析
- 基于ubuntu16 Python3 tensorflow(TensorFlow环境搭建)
- 详解自定义ajax支持跨域组件封装
- java实现动态时钟并设置闹钟功能
- 浅析JVM逃逸的原理及分析
- Java实现数组翻转的实现代码