Map集合中get不存在的key值

Posted youpeng

tags:

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

返回的值是null

测试代码

import java.util.HashMap;
import java.util.Map;

public class Test 
    public static void main(String[] args) 
        Map<String,String> 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.
     *
     * <p>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.)
     *
     * <p>A return value of @code null does not <i>necessarily</i>
     * 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<K,V> 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<K,V> getNode(int hash, Object key) 
        Node<K,V>[] tab; Node<K,V> 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<K,V>)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值的主要内容,如果未能解决你的问题,请参考以下文章

java怎么判断map集合的值是多少?

集合——Map集合

java之map接口

我的学习之路_第八章_map集合

集合框架(中):Map

如何将map集合中相同value的key取出来