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 关联)。
这段话不是很明白。 展开
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 关联)。
这段话不是很明白。 展开
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 关联”。
自己查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来创建一个对象来获取返回值?(这个问题似乎很傻,但是我总觉得有点蒙蒙,似懂非懂的样子。。)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询