`
文艺的程序猿
  • 浏览: 98595 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

map containsKey与get方法区别经典总结

    博客分类:
  • JAVA
阅读更多

前提是:Map可以出现在k与v的映射中,v为null的情况, 所以containsKey出现更加必要!!
Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况,一种是在集合中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断,例如下面的例子。


下面的代码首先创建一个由HashMap类实现的Map集合,并依次向Map集合中添加一个值对象为null和“马先生”的映射;然后分别通过get()和containsKey()方法执行这两个键对象;最后执行一个不存在的键对象。关键代码如下:

<span style="font-size:18px;">import java.util.HashMap;
import java.util.Map;

public class TestMapKey {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer, String>();
		map.put(220180, null);
		map.put(220181, "马先生");
		System.out.println("get()方法的返回结果:");
		System.out.print("------ " + map.get(220180));
		System.out.print("    " + map.get(220181));
		System.out.println("    " + map.get(220182));
		System.out.println("containsKey()方法的返回结果:");
		System.out.print("------ " + map.containsKey(220180));
		System.out.print("    " + map.containsKey(220181));
		System.out.println("    " + map.containsKey(220182));
	}
}
</span>

 执行上面的代码,在控制台将输出如下信息:

get()方法的返回结果:

------ null    马先生    null
containsKey()方法的返回结果:
------ true    true    false

 

结论:Map集合中不应该利用get()方法来判断是否存在某个键,因为可能map的key值存在但value的值为null

 

分享到:
评论

相关推荐

    javascript(map功能)

    * containsKey(key) 判断MAP中是否含有指定KEY的元素 * containsValue(value) 判断MAP中是否含有指定VALUE的元素 * values() 获取MAP中所有VALUE的数组(ARRAY) * keys() 获取MAP中所有KEY的数组(ARRAY)

    js中的类似于java中的map工具对象Map.js

    此文件是源代码,亲测有类似于java的Map对象的类似方法:put(key,value)、get(key)、keys()、values()、size()、isEmpty()、remove(key)、clear()、element(index)、containsKey(key)、containsValue(value)。...

    Java集合框架Map接口.pdf

    Map接口概念 ...4. containsKey(Object key):判断Map中是否包含指定的键。 5. containsValue(Object value):判断Map中是否包含指定的值。 6. size():返回Map中键值对的数量。 7. keySet():返回一个包含Map

    AS2.0写的Map

    仿写的这个Map内包含的方法. containsKey(key) containsValue(value) get(key) put(key, value) remove(key) putAll(map:Map) size() isEmpty() values() keys() toString() 本人刚学AS发现...好像2.0只有Array ...

    JavaScript中实现Map的示例代码

    不废话了,直接贴代码了。 代码一: var map=new Map();...map.containsKey('kevin') //返回:false function Map() { this.keys = new Array(); this.data = new Object(); /** * 放入一个键值对 * @par

    collection-1.2.1

    * containsKey(key) 判断MAP中是否含有指定KEY的元素 * containsValue(value) 判断MAP中是否含有指定VALUE的元素 * values() 获取MAP中所有VALUE的数组(ARRAY) * keys() 获取MAP中所有KEY的数组(ARRAY) ...

    pageDate封装参数,不用实体类

    if(map.get(key) instanceof Object[]) { Object[] arr = (Object[])map.get(key); obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]); } else { obj = map.get(key); }...

    Jquery插件-通用基本函数

    Jquery Map Request DIV居中 Windows /** * MAP拥有JAVA HashMap函数基本特性 * @Attribute datas 数据源 * @Attribute size 数据长度 * @Function containsKey(key) 判断KEY是否存在 * @Function contains...

    ffmpeg-20170620-ae6f6d4-win64

    ConcurrentMap, Object&gt; map = handlerMap.get(pushId); //关闭两个线程 ((OutHandler)map.get("error")).destroy(); ((OutHandler)map.get("info")).destroy(); System.out.println("停止命令-----end ...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    Excel POI读取封装(文件+示范代码)

    String excelvalue = map.get(e.getName()).trim(); Object obj=null; DataType stued=new StuEducationImpl(); if(e.isForeign()){ String[] data=(String[])stued.dealDataType(e,excelvalue); obj=...

    java7hashmap源码-JAVA-:JAVA-

    查找key使用containskey方法, 3 hashtable查询的的时间复杂度为O(1)可以使用put和get方法存储查询数据。List类使用add和get。 4 new HashMap&lt;String&gt;&gt;(); 定义的这个数据结构中,如果每次都hashMap.put(string, ...

    java常见算法

    Map,Integer&gt; tmp=new HashMap(); for(char c:arrs) { if(tmp.containsKey(c)) tmp.put(c,tmp.get(c)+1); else tmp.put(c,1); } Iterator&lt;Character&gt; it=arrs.iterator(); while (it.hasNext()) { ...

    javalruleetcode-LeetCode:跟踪尝试的问题

    map.containsKey, map.put(a,b), map.get(a) 是关键方法 0002 第一个想法是我需要处理结转。 创建辅助函数以添加额外参数。 每次递归都会创建新的 ListNode 并使 myListNode.next 等于调用将返回 ListNode 的辅助...

    java-hashmap:Java HashMap的插图

    插图5: containsKey()和containsValue()方法的使用 插图6:使用keySet()。iterator()迭代在HashMap上进行迭代 插图7:使用TreeMap对未排序的HashMap进行排序 关于项目 该项目包括样本NetBeans项目,该...

    LeetCode判断字符串是否循环-LeeCode-Java:记录Leecode刷题思路与知识点

    LeetCode判断字符串是否循环 LeeCode- Java 记录Leecode刷题思路与知识点 题目分类 Hash相关 题目描述: 给定一个整数数组 ...(map.containsKey(nums[i])) { return new int[]{map.get(nums[i]), i}; } map.p

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    POI 操作EXCEL WORD完整例子示范(公司内部代码)

    public static void processTable(XWPFDocument doc, Map dataMap) { Iterator&lt;XWPFTable&gt; iter = doc.getTablesIterator(); while(iter.hasNext()) { XWPFTable table = iter.next(); List&lt;XWPFTableRow&gt; rows...

    java 同一用户不能同时登陆问题

    if (httpssessionmap.containsKey(userid)&&httpssessionmap.get(userid).equals(event.getSession())) { //userIds.remove(userid); httpssessionmap.remove(userid); if(u!=null && userid....

    HXSDKHelper.java 环信Demo 

    private Map, User&gt; contactList; /** * robot list in cache */ private Map, RobotUser&gt; robotList; private CallReceiver callReceiver; /** * 用来记录foreground Activity */ private List...

Global site tag (gtag.js) - Google Analytics