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的key获得它的value?

java用map通过value能找到key吗

java怎么通过key值获取value值

如何在java中解析具有<map-Map><map-Entry><map-Key><map-Value>的xml文件[关闭]

java 怎么取map的value值

java 快速将两个list<map> 根据map中某个固定key的value相等整合成一个list<map>