关于Java的Map用法的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Java的Map用法的问题相关的知识,希望对你有一定的参考价值。

key和value
我想知道key中存入的都是相同的值,但value不同,这样能不能行。
或者key中存一个数,value里存2个或者更多,是不是办不到啊。
小弟初学Java,望大虾指教!不胜感激~~~

我想知道key中存入的都是相同的值,但value不同,这样能不能行。
很遗憾 这样肯定是不行的 key之所以称为key 就是说要保证它是唯一的 如果你想实现上面的功能 把value当做key 把key当value不就可以了吗?

key中存一个数,value里存2个或者更多,是不是办不到啊。
可以做到 key是一个数 value随便一个Object就可以 可以是数组 也可以是集合 比如说是List 这些都可以存一组数据
参考技术A Java中的Map,1个key只能对应1个Value,第二次放入同样的key时会覆盖掉上次的value。

要1个key对应多个value,用apach提供的MultiValueMap
org.apache.commons.collections.MultiValueMap
其value取出来是个List
参考技术B 我想知道key中存入的都是相同的值,但value不同,这样能不能行(不行)

或者key中存一个数,value里存2个或者更多,是不是办不到啊(其value可以是bean,map,list...)
参考技术C key 和 value是一一对应的关系,一个key只能对应一个value
你可以把key 要对应的多个值放入一个list中,用key来对应这个list

java 中Map用法

while(itr.hasNext()) String skey=(String)itr.next(); String svalue=(String)map1.get(skey); System.out.println("key=="+skey+",value=="+svalue); System.out.println("---------------------------"); Set<Entry<String,String>> setentry=map1.entrySet(); Iterator<Entry<String,String>> entryit=setentry.iterator(); while(entryit.hasNext()) Entry<String,String> en=(Entry<String,String>)entryit.next(); String skey2=(String)en.getKey(); String svalue2=(String)en.getValue(); System.out.println("key2=="+skey2+",value2=="+svalue2); 有什么区别吗?

参考技术A 第一种是先把map的所有key看成Set,然后遍历出每个key,根据key获取value.
第二种是先把map看成一个Map.Entry的Set,那么每个Map.Entry就是一个键--值对,遍历这个Set,就遍历出了一个个的Map.Entry,这个对象包含了键值对,直接从中获取key和value就ok.

以上是关于关于Java的Map用法的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于java的Map中put()的问题

关于java Map和Collection接口

java关于Random的用法

关于java中HashMap的put方法中的参数问题

JAVA——MapSet用法

关于java object对象中的map取值问题。。。