java中map<key,value>是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中map<key,value>是啥意思?相关的知识,希望对你有一定的参考价值。
Java中Map<key,value>是什么意思?key和value代表的是什么东西??看书没太明白,希望通俗一点的回答,不要太官方了,有例子更好,再此感谢!!
java中map<key,value>是泛型的典型样式。key和value代表键和值,你可以想象成两个值一一对应,可以根据key查找到value的值。你可以把省作为key,省会作为value,根据省可以查到省会。或者把整数作为key,任何对象作为value,就和数组一样根据整数能找到对应的对象。
Map<String,int> 就表示这个 map 的key 是String 类型 value 是 int 类,就是 强制设计期就限定map 里面元素的类型.
JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。
泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象,这样的事情;
更多内容请参考《java泛型详解_百度百科》 参考技术A 这个是JDK 1.5以后出现的新特性的写法
Map<key1, value1> map = null;
表示的是这个map的key必须是key1类型,value必须是value1类型。
譬如你声明一个Map<String, List> map = null;
如果你要放入map.put("abc", Integer),就不可以了。
而拿取得时候,这样声明,不用强制转换。譬如
List list = map.get("abc"); 参考技术B key和value代表键和值,你可以想象成两个值一一对应,可以根据key查找到value的值。你可以把省作为key,省会作为value,根据省可以查到省会。或者把整数作为key,任何对象作为value,就和数组一样根据整数能找到对应的对象本回答被提问者采纳 参考技术C key和value是对应的。
就好像 学生 和 学号是对应的。
但这种对应关系不是天然的,是需要后期人工添加上去的。
key可以对应学生,value可以对应学号。
put方法可以对应后期人工添加。
[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 counting public 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
以上是关于java中map<key,value>是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
如何在java中解析具有<map-Map><map-Entry><map-Key><map-Value>的xml文件[关闭]