首先,让我们看看在Java API文档中是如何编写这两种方法的。
——33543354——3——————3——3——3————3————3——33——33——333——33——3——3——3——3——3——33——33————333——333——3543333333
获取
是对象密钥(vget )
返回指定键映射到的值。 如果地图不包含键映射关系,则返回null。
更确切地说,如果此映射包含满足(key==null? 对于k==null:key.equals(k ) )的键k到值v的映射关系,此方法返回v。 否则返回空值。 (这样的映射关系最多只有一个。
如果此映射允许null值,则返回null值不一定意味着映射不包含键映射关系。 映射也可以将键以显示方式映射为空。 使用containsKey操作可以区分这两种情况。
参数:
key-返回关联值的键
返回:
指定键映射到的值; 如果映射不包含键映射关系,则返回null
慢速:
ClassCastException-如果密钥不适合此映射(可选)
NullPointerException-如果指定的密钥为空,并且此映射不允许空密钥(可选)
——————————————————————————————————————————
连续性密钥
booleancontainskey (对象密钥) ) ) )。
如果此映射包含指定键的映射关系,则返回true。 更准确地说,只有在此映射包含满意(key==null )时? 对于k==null:key.equals(k ) )的键k的映射关系,返回true。 (这样的映射关系最多只有一个。
参数:
ky—测试此地图中是否有密钥
返回:
如果此映射包含指定键的映射关系,则返回true
慢速:
ClassCastException-如果密钥不适合此映射(可选)
NullPointerException-如果指定的密钥为空,并且此映射不允许空密钥(可选)
——————————————————————————————————————————
在Map集合中,值对象可以为null,并且没有数量限制,因此get ) )方法的返回值为null时,存在以下两种情况:
表示集合中没有该关键对象,
没有将值对象映射到关键对象,即值对象为null。
因此,正如Java API中所述,在Map集合中,应该使用contains key (contains key ) )方法来确定是否存在某个键,而不是使用get (方法来确定)。 以下是示例。
import java.util.HashMap;
import java.util.Map;
公共类映射演示1 {
publicstaticvoidmain (字符串[ ] args ) {
Map map=new HashMap (;
map.put(1,' a ';
map.put(2,null );
系统. out.println (map.get (1); //A
系统. out.println (map.get (2);//空值
系统. out.println (map.get (3);//空值
system.out.println ('========================() ) )
系统. out.println (map.contains key (1) );//真
系统. out.println (map.contains key (2) );//真
系统. out.println (map.contains key (3) ); //false
}
}
执行结果如下。
a
空值
空值
===============================
真的
真的
假的
总结:
在Map集合中,get )方法不应该确定某个键是否存在。 因为如果映射的key值不存在或key存在,但value为null,则全部返回null!
Map集合的key值的判断应该用containsKey ()方法来判断!