[Java基础]让Map value自增
需求:我要在map中判断是否存在key,存在则让key对应的value = value+1,否则设置<key,value=1>
代码实现方式如下:
ContainsKey
import java.util.HashMap; import java.util.Map; ... Map<String, Integer> freq = new HashMap<String, Integer>(); ... int count = freq.containsKey(word) ? freq.get(word) : 0; freq.put(word, count + 1);
TestForNull
import java.util.HashMap; import java.util.Map; ... Map<String, Integer> freq = new HashMap<String, Integer>(); ... Integer count = freq.get(word); if (count == null) {freq.put(word, 1); } else {freq.put(word, count + 1); }
AtomicLong
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicLong; ... final ConcurrentMap<String, AtomicLong> map = new ConcurrentHashMap<String, AtomicLong>(); ... map.putIfAbsent(word, new AtomicLong(0)); map.get(word).incrementAndGet();
Trove
import gnu.trove.TObjectIntHashMap; ... TObjectIntHashMap<String> freq = new TObjectIntHashMap<String>(); ... freq.adjustOrPutValue(word, 1, 1);
MutableInt
import java.util.HashMap; import java.util.Map; ... class MutableInt {int value = 1; // note that we start at 1 since we're countingpublic void increment () { ++value; }public int get () { return value; } } ... Map<String, MutableInt> freq = new HashMap<String, MutableInt>(); ... MutableInt count = freq.get(word); if (count == null) {freq.put(word, new MutableInt()); } else {count.increment(); }
还有Java8的方法:
Map.merge(key, 1, Integer::sum) //如果key存在,就调用sum 1 到map的value,如果key不存在,put(key,1)
时间方面,执行1000次数,如下所示
time, ms kolobokeCompile 18.8 koloboke 19.8 trove 20.8 fastutil 22.7 mutableInt 24.3 atomicInteger 25.3 eclipse 26.9 hashMap 28.0 hppc 33.6 hppcRt 36.5
转载于:https://www.cnblogs.com/zhengwangzw/p/9432668.html
[Java基础]让Map value自增相关推荐
- Java基础——常用Map的实现细节
2019独角兽企业重金招聘Python工程师标准>>> Java基础--Map HashMap 数据结构: 数组 + 单链表 transient Entry[] table; // ...
- 【CXY】JAVA基础 之 Map
概述: 1.键值对,key-value,具有映射关系的数据 2.Map的key不允许重复,value可以重复 3.Map里的key类似一个Set,甚至可以通过map.keySet()拿到key的Set ...
- Java基础之map总结
map的基础理解 话不多说,先上图,可以这样简单的对容器中的map进行分类: 我们在Java开发中,除了最常用的基本数据类型和String对象之外,也会经常用到集合类.集合类中存放的都是对象的引用,而 ...
- Java基础之Map类
Map类 Map 键(key)值(value)对形式 interface Map<K, V> class HashMap<K, V>哈希表结构 class Tree M ...
- 【java基础】Map数据的存进和取出的顺序相同
Map数据的存进和取出的顺序相同,需要用到linkedHashMap结构,如下所示: import java.util.HashMap; import java.util.LinkedHashMap; ...
- java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机;
文章目录 前言 一.map 遍历方法 二.java正则学习 三.后端传到前端图片三种情况 1. 图片流数据(InputStream) 转 base64,前端展示保存 a. 后端:输入流转base,直接 ...
- Java基础之Map集合
Map集合: 1.Map集合与Collection集合的区别: 1.Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储. 2.Map中的集合1,元素是成对存在的, ...
- 【java基础】map的基本使用与字符串中每个字符出现的次数统计
Map集合概述和特点 Map集合概述 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存取 ...
- 回忆Java基础中Map的遍历方法
转自http://blog.163.com/fw_long/blog/static/51771186201392982041337/ keySet是键的集合,Set里面的类型即key的类型 entry ...
最新文章
- 实力坑队友! CTO 写出低级 Bug,致公司 70 GB 数据遭泄露!
- MapReduce的自制Writable分组输出及组内排序
- 沃顿商学院:价格杠杆,企业竞争的底层逻辑
- mysql数据库version版本控制_MySQL数据库版本控制
- tensorflow1、2会话、变量、feed、fetch、最小二乘法
- 动态列排序_Excel表格利用函数制作排序器(可依据不同字段、升降序排序)
- Shell命令-磁盘与文件系统之e2fsck、mkswap
- SAP License:成本要素的拉入拉出
- ECC椭圆曲线加密算法原理 | 比特币加密算法
- 使用数组初始化vector对象
- 学习ajxa 必备插件
- 【P4lang】P4数据平面编程实验basic_tunnel
- uni-app开发app之一uni-app优缺点
- vueJs写一个分页
- Allegro基本规则设置指导书之Electrical Total Etch Length
- C++编程-腐烂的橘子-广度优先搜索
- 苹果手机用户流失严重,竟是因为这个原因?
- 运用python简单的画圆
- oeasy教您玩转python - 012 - # 刷新时间
- java绝对值怎么取