java map接口中的方法value();返回值是collection类型。请问为什么是这样获取返回值?

importjava.util.*;classMapDemo{publicstaticvoidmain(String[]args){Map<String,String>m... 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 关联)。
这段话不是很明白。
展开
 我来答
百度网友3319329
2012-05-10 · TA获得超过184个赞
知道小有建树答主
回答量:146
采纳率:100%
帮助的人:146万
展开全部
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 关联”。
追问
第二个问题已经明白了,但是第一个问题中,我知道返回值是collection,但是我不知道为什么是直接创建一个引用collection的对象来获取map.value();的。collection不是接口么,而map没有实现了collection接口。两者间是如何联系的?还有为什么返回值是collection就用collection来创建一个对象来获取返回值?(这个问题似乎很傻,但是我总觉得有点蒙蒙,似懂非懂的样子。。)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式