java中Map可以有相同的value吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中Map可以有相同的value吗相关的知识,希望对你有一定的参考价值。

Map<String, List> lists = new HashMap<String, List>();
List<Record> list = recordDAO.getRcord(rm); //都掉同一方法
List<b> recordList = new ArrayList<b>();
lists.put("a",recordList )
List<a> reList = new ArrayList<a>();
lists.put("b",reList)

请问结果会怎样

我来回答你吧~
map是可以放相同的value的,不过key值必须唯一。
按你这个代码,List<b> recordList = new ArrayList<b>();
得到一个空的list,然后放入了map中。
List<a> reList = new ArrayList<a>();
又得到一个空list,然后放入了map中。
这样当你通过key "a"或者"b"取值时候,都会得到一个size为0的list的。
但注意这个时候你取出的list是List这样的类型,并未泛型化,需要进行强转来得到List<b>或List<a>。
希望帮助了你吧。最好自己动手试试。
参考技术A map put同样的key的话会把原来的value覆盖,所以不会有重复的key,value没有限制

你这个结果就是lists里面有两个元素
a 对应一个 ArrayList<b>
b 对应一个 ArrayList<a>
参考技术B key不能重复,value是可以重复的

你这代码没什么结果

java中常用的数据结构--Map

一、定义:

  将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。

public interface Map<K,V>

  请注意!!!, Map 没有继承 Collection 接口, Map 提供 key 到 value 的映射,你可以通过“键”查找“值”。一个 Map 中不能包含相同的 key ,每个 key 只能映射一个 value 。 Map 接口提供 3 种集合的视图, Map 的内容可以被当作一组 key 集合,一组 value 集合,或者一组 key-value 映射。 

  Map的API  

void clear() 
从该地图中删除所有的映射(可选操作)。  
 
boolean containsKey(Object key) 
如果此映射包含指定键的映射,则返回 trueboolean containsValue(Object value) 
如果此地图将一个或多个键映射到指定的值,则返回 true 。  
 
Set<map.entry<k,v>> entrySet() 
返回此地图中包含的映射的Set视图。  
 
V get(Object key) 
返回到指定键所映射的值,或 null如果此映射包含该键的映射。  
 
boolean isEmpty() 
如果此地图不包含键值映射,则返回 true 。  
 
Set<k> keySet() 
返回此地图中包含的键的Set视图。  
 
V put(K key, V value) 
将指定的值与该映射中的指定键相关联(可选操作)。  
 
void putAll(Map<!--? extends K,? extends V--> m) 
将指定地图的所有映射复制到此映射(可选操作)。
 
V remove(Object key) 
如果存在(从可选的操作),从该地图中删除一个键的映射。  
 
default boolean remove(Object key, Object value) 
仅当指定的密钥当前映射到指定的值时删除该条目。  
 
default V replace(K key, V value) 
只有当目标映射到某个值时,才能替换指定键的条目。  
 
default boolean replace(K key, V oldValue, V newValue) 
仅当当前映射到指定的值时,才能替换指定键的条目。  
 
int size() 
返回此地图中键值映射的数量。  
 
Collection<v> values() 
返回此地图中包含的值的Collection视图。  
</v></k></map.entry<k,v>

Map中还包括一个内部类Entry,该类封装了一个key-value对。Entry包含如下三个方法:
  K getKey()
  返回与此条目相对应的键。 
 
  V getValue()
  返回与此条目相对应的值。 
 
  V setValue(V value)
  用指定的值替换与该条目相对应的值(可选操作)

二、实现Map接口的子类

1、TreeMap : http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928

2、HashMap : http://www.cnblogs.com/skywang12345/p/3310835.html

3、HashTable: http://www.cnblogs.com/skywang12345/p/3310887.html

4、Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析:http://www.importnew.com/28263.html

三、集合系列的学习

  http://www.cnblogs.com/skywang12345/p/3323085.html

以上是关于java中Map可以有相同的value吗的主要内容,如果未能解决你的问题,请参考以下文章

java map的key可以重复吗

Java的Map集合中多个不同的key可以映射到同一个value吗?

java map中相同的key保存多个value值方式

关于java里Map的value 相同的个数的问题?

java map的key可以重复吗

java map表里,key值能否映射到多个Value?