猿问

Collection<String> coll = map.values();为什么可以直接这样子

import java.util.*;
class MapDemo 
{
public static void main(String[] args) 
{
Map<String, String> map = new HashMap<String,String>();

//添加元素 添加元素,如果出现添加时,相同的键。那么后添加的值会覆盖原有键对应值。
//并且put方法会返回被覆盖的值。
sop("put:"+map.put("01","zhangsan1"));
sop("put:"+map.put("01","123"));
map.put("02","zhangsan2");
map.put("03","zhangsan3");

sop("containsKey:" + map.containsKey("02"));
sop("remove:"+map.remove("020"));

sop("get:" + map.get("02"));

map.put(null,"该值键是null");
sop("get:" + map.get(null));

map.put("04",null);
sop("get:" + map.get("04"));
Collection<String> coll = map.values();//这里,为什么可以直接这样子。map不是collection的子接口也不是实现类。

sop(coll);
sop(map);

}

public static void sop(Object obj)
{
System.out.println(obj);
}
}
补充一个问题:在添加元素下面的两行代码
sop("put:"+map.put("01","zhangsan1"));
sop("put:"+map.put("01","123"));
这里,为什么如果只打印第一行代码,返回值是null我查看了API,其解释为:以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。(如果该实现支持 null 值,则返回 null 也可能表示此映射以前将 null 与 key 关联)。 
这段话不是很明白。

肥皂起泡泡
浏览 118回答 1
1回答

郎朗坤

Collection<String> coll = map.values();自己查values方法返回值是什么。map接口的key-value映射关系中,key或value允许为null由具体实现决定。put方法必须有个返回值,该返回值用来暗示map容器中是否已存在相同的key。一般情况,如果key已存在,则替换旧的value并返回它,否则创建映射并返回null。如果map实现允许value为null,那么put一个value为null的映射,再次put进相同key的映射,此时返回值必是null,无法得知是否已存在相同的key。相应了这句话“如果该实现支持 null 值,则返回 null 也可能表示此映射以前将 null 与 key 关联”。
随时随地看视频慕课网APP

相关分类

Java
我要回答