指点成金-最美分享吧

登录

Map集合中get不存在的key值

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了Map集合中get不存在的key值相关的知识,希望对你有一定的参考价值。

返回的值是null

测试代码

import java.util.HashMap;import java.util.Map;public class Test     public static void main(String[] args)         Map map = new HashMap<>();        String test = map.get("hello");        System.out.println(test);    

运行结果为:

null

从结果可以看出,HashMap集合中,获取不存在的key时并不会报异常.

在Map的实现类HashMap中有这样一段代码

   /**     * Returns the value to which the specified key is mapped,     * or @code null if this map contains no mapping for the key.     *     * 

More formally, if this map contains a mapping from a key * @code k to a value @code v such that @code (key==null ? k==null : * key.equals(k)), then this method returns @code v; otherwise * it returns @code null. (There can be at most one such mapping.) * *

A return value of @code null does not necessarily * indicate that the map contains no mapping for the key; it"s also * possible that the map explicitly maps the key to @code null. * The @link #containsKey containsKey operation may be used to * distinguish these two cases. * * @see #put(Object, Object) */ public V get(Object key) Node e; return (e = getNode(hash(key), key)) == null ? null : e.value; /** * Implements Map.get and related methods. * * @param hash hash for key * @param key the key * @return the node, or null if none */ final Node getNode(int hash, Object key) Node[] tab; Node first, e; int n; K k; if ((tab = table) != null && (n = tab.length) > 0 && (first = tab[(n - 1) & hash]) != null) if (first.hash == hash && // always check first node ((k = first.key) == key || (key != null && key.equals(k)))) return first; if ((e = first.next) != null) if (first instanceof TreeNode) return ((TreeNode)first).getTreeNode(hash, key); do if (e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k)))) return e; while ((e = e.next) != null); return null;

在get方法中并没有向上抛出异常,注释也说明了返回节点或者null

以上是关于Map集合中get不存在的key值的主要内容,如果未能解决你的问题,请参考以下文章