需求:我要在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自增相关推荐

  1. Java基础——常用Map的实现细节

    2019独角兽企业重金招聘Python工程师标准>>> Java基础--Map HashMap 数据结构: 数组 + 单链表 transient Entry[] table; // ...

  2. 【CXY】JAVA基础 之 Map

    概述: 1.键值对,key-value,具有映射关系的数据 2.Map的key不允许重复,value可以重复 3.Map里的key类似一个Set,甚至可以通过map.keySet()拿到key的Set ...

  3. Java基础之map总结

    map的基础理解 话不多说,先上图,可以这样简单的对容器中的map进行分类: 我们在Java开发中,除了最常用的基本数据类型和String对象之外,也会经常用到集合类.集合类中存放的都是对象的引用,而 ...

  4. Java基础之Map类

    Map类 Map 键(key)值(value)对形式 interface Map<K, V> ​ class HashMap<K, V>哈希表结构 ​ class Tree M ...

  5. 【java基础】Map数据的存进和取出的顺序相同

    Map数据的存进和取出的顺序相同,需要用到linkedHashMap结构,如下所示: import java.util.HashMap; import java.util.LinkedHashMap; ...

  6. java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机;

    文章目录 前言 一.map 遍历方法 二.java正则学习 三.后端传到前端图片三种情况 1. 图片流数据(InputStream) 转 base64,前端展示保存 a. 后端:输入流转base,直接 ...

  7. Java基础之Map集合

    Map集合: 1.Map集合与Collection集合的区别: 1.Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储. 2.Map中的集合1,元素是成对存在的, ...

  8. 【java基础】map的基本使用与字符串中每个字符出现的次数统计

    Map集合概述和特点 Map集合概述 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存取 ...

  9. 回忆Java基础中Map的遍历方法

    转自http://blog.163.com/fw_long/blog/static/51771186201392982041337/ keySet是键的集合,Set里面的类型即key的类型 entry ...

最新文章

  1. 实力坑队友! CTO 写出低级 Bug,致公司 70 GB 数据遭泄露!
  2. MapReduce的自制Writable分组输出及组内排序
  3. 沃顿商学院:价格杠杆,企业竞争的底层逻辑
  4. mysql数据库version版本控制_MySQL数据库版本控制
  5. tensorflow1、2会话、变量、feed、fetch、最小二乘法
  6. 动态列排序_Excel表格利用函数制作排序器(可依据不同字段、升降序排序)
  7. Shell命令-磁盘与文件系统之e2fsck、mkswap
  8. SAP License:成本要素的拉入拉出
  9. ECC椭圆曲线加密算法原理 | 比特币加密算法
  10. 使用数组初始化vector对象
  11. 学习ajxa 必备插件
  12. 【P4lang】P4数据平面编程实验basic_tunnel
  13. uni-app开发app之一uni-app优缺点
  14. vueJs写一个分页
  15. Allegro基本规则设置指导书之Electrical Total Etch Length
  16. C++编程-腐烂的橘子-广度优先搜索
  17. 苹果手机用户流失严重,竟是因为这个原因?
  18. 运用python简单的画圆
  19. oeasy教您玩转python - 012 - # 刷新时间
  20. java绝对值怎么取

热门文章

  1. java set删除第一个元素_Java面试题10(如何取到set集合的第一个元素)
  2. 使用PCB Editor 布局布线
  3. 固态器件理论(9)晶闸管
  4. Alpha阶段事后分析
  5. Habitica 4.85.5 发布,习惯游戏养成应用
  6. 千兆宽带:是为了速度而提升速度吗?
  7. 图像热点(图像地图)
  8. php 之 数据访问 增删改查
  9. Fedora 17 下安装codeblocks
  10. .bash_pfofile、.bash_logout和.bashrc区别