Map containsKey()与get()方法区别
2017-07-14 00:00
218 查看
我们先来看一下,Java API文档中,是如何描述这两个方法的。
———————————————————————————————————————————
get
V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
更确切地讲,如果此映射包含满足 (key==null ? k==null : key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。
参数:
key - 要返回其关联值的键
返回:
指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
——————————————————————————————————————————
如果此映射包含指定键的映射关系,则返回 true。更确切地讲,当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true。(最多只能有一个这样的映射关系)。
参数:
key - 测试是否存在于此映射中的键
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
——————————————————————————————————————————
由于Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况:
①是在集合中没有该键对象,
②是该键对象没有映射任何值对象,即值对象为null。
因此,结合Java API中所述,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断,示例如下:
运行结果如下:
对于Map集合的key值判断,应该利用containsKey()方法进行判断!
———————————————————————————————————————————
get
V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
更确切地讲,如果此映射包含满足 (key==null ? k==null : key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。
参数:
key - 要返回其关联值的键
返回:
指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
——————————————————————————————————————————
containsKey
boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。更确切地讲,当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true。(最多只能有一个这样的映射关系)。
参数:
key - 测试是否存在于此映射中的键
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
——————————————————————————————————————————
由于Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况:
①是在集合中没有该键对象,
②是该键对象没有映射任何值对象,即值对象为null。
因此,结合Java API中所述,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断,示例如下:
import java.util.HashMap; import java.util.Map; public class MapDemo1 { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "A"); map.put(2, null); System.out.println( map.get(1)); //A System.out.println(map.get(2)); //null System.out.println(map.get(3)); //null System.out.println("=================================="); System.out.println( map.containsKey(1)); //true System.out.println(map.containsKey(2)); //true System.out.println(map.containsKey(3)); //false } }
运行结果如下:
A null null ================================== true true false
总结:
Map集合中不应该利用get()方法来判断是否存在某个键,因为map的key值不存在时,或者key存在,但value为null时,都是返回null!对于Map集合的key值判断,应该利用containsKey()方法进行判断!
相关文章推荐
- Java map containsKey与get方法区别经典总结
- map containsKey与get方法区别经典总结
- map containsKey与get方法区别经典总结
- map containsKey与get方法区别
- map containsKey与get方法区别经典总结
- map containsKey 与get方法 区别 经典 总结
- MyBatis使用@MapKey注解接收多个查询记录到Map中,以便方便地用get()方法获取字段的值
- map中containsKey与get方法区别
- Map.containsKey/Map.containsValue方法——判断Map集合对象中是否包含指定的键名
- list.get(i)-List和list.get(i).get("key")->Map结构 获取值的区别
- [备忘]ASP.NET MVC中RouteData.GetRequiredString("key")方法和RouteData.DataTokens["key"]方法使用上的区别
- Hibernate Session对象load()方法和get()方法区别?
- Hibernate get() load() 方法区别
- AJAX中GET和POST方法的区别
- 面试常见问题heibernate中sessin的get和load方法区别的实验解说
- xmlhttp:open方法中的POST、GET参数的区别
- 1 get,post数据长度的限制 2 GET与POST方法的区别
- java.io.File 中 getPath(), getAbsolutePath() 和 getCanonicalPath() 三个方法的区别
- document.getElementById("").style和$("").css(name,value)方法的区别?
- Hibernate Session对象load()方法和get()方法区别