`
darrenzhu
  • 浏览: 804113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Map中的Null key, Null Value

阅读更多
ConcurrentHashMap的key和value都不能为null,否则抛NullPointerException
java.util.concurrent.ConcurrentHashMap.put(K, V)

    /**
     * Maps the specified key to the specified value in this table.
     * Neither the key nor the value can be null.
     *
     * <p> The value can be retrieved by calling the <tt>get</tt> method
     * with a key that is equal to the original key.
     *
     * @param key key with which the specified value is to be associated
     * @param value value to be associated with the specified key
     * @return the previous value associated with <tt>key</tt>, or
     *         <tt>null</tt> if there was no mapping for <tt>key</tt>
     * @throws NullPointerException if the specified key or value is null
     */
    public V put(K key, V value) {
        if (value == null)
            throw new NullPointerException();
        int hash = hash(key.hashCode());
        return segmentFor(hash).put(key, hash, value, false);
    }



hashMap和linkedhashMap都允许null key和null value,
treeMap不允许null key,但允许null value

http://www.trinea.cn/android/android-source-code-analysis/concurrenthashmap-nullpointerexception-null-key/
分享到:
评论

相关推荐

    嵌套Map或者List获取key、value值

    本篇将详细介绍如何在嵌套的Map和List中获取key和value值。 首先,让我们理解什么是嵌套的Map。一个Map是一个键值对的集合,其中每个键都是唯一的,并且关联着一个值。当一个Map的值本身又是一个Map时,我们就说这...

    关于map的 一个key对应多个value

    NULL 博文链接:https://zzcjobstudy.iteye.com/blog/2066185

    java程序员面试题

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...

    对map里面的value进行排序

    然而,有时我们需要对Map中的值进行排序,例如按照value的大小进行升序或降序排列。这篇博客"对map里面的value进行排序"探讨的就是如何实现这一需求。 首先,我们了解Map接口的基本概念。Map接口不直接支持排序,...

    根据map值获取key.txt

    在 Java 编程语言中,`Map` 是一种非常常见的数据结构,它通过键值对的形式存储数据,其中键(Key)是唯一的,而值(Value)可以有多个相同的实例。在实际开发过程中,我们经常会遇到需要根据值(Value)来查找其...

    javascript(map功能)

    * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回NULL * element(index) 获取指定索引的元素...

    ConcurrentMap.putIfAbsent(key,value)用法实例

    ConcurrentMap.putIfAbsent(key, value) 是一种 atomic 操作,用于在并发环境下安全地将键值对添加到 Map 中。这个方法主要是为了解决 put-if-absent 操作中的 race condition 问题。在单线程环境下,使用 if-else ...

    简单的key value hashmap

    哈希映射(HashMap)是Java编程语言中一个非常重要的数据结构,它在《简单的key value hashmap》中被提及,通常用于存储键值对(key-value pairs)。HashMap是Java集合框架的一部分,它提供了高效的查找、插入和删除...

    collection-1.2.1

    * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回NULL * element(index) 获取指定索引的...

    Map是一种键值对(key-value)数据结构

    标题中的“Map是一种键值对(key-value)数据结构”揭示了Map在计算机科学和编程中的核心概念。Map,也常被称为哈希表或字典,是数据结构中的一种重要类型,它允许我们通过键(key)来快速查找、添加和删除对应的值...

    Java Map按键排序和按值排序

    Java Map按键排序和按值排序是Java编程语言中常用的数据结构之一。Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的...

    在JavaScript中实现map对象

    - `put(key, value)`:向Map中添加或更新键值对。 - `remove(key)`:移除指定键的元素,并返回操作结果。 - `get(key)`:获取指定键对应的值。 - `element(index)`:获取指定索引处的元素。 - `containsKey(key)`:...

    深入Java关键字null

    - **Map**:键(`key`)最多只能包含一个`null`元素,而值(`value`)则可以包含任意数量的`null`元素。 - **数组**:基本类型数组,如果定义后没有显式地赋初值,则Java会自动给它们赋值;对于引用类型数组,如果没有...

    Android 将json数据的key和value动态加载到listview

    在本例中,JSON的key将作为ListView的标题项,value则作为标题对应的详细内容。 1. **解析JSON数据**:首先,你需要使用Android的内置库`org.json`或第三方库如Gson、Jackson来解析JSON。例如,如果你的JSON数据是...

    比较map对象之间的工具类,特殊场景,value的string类型相等,认同为相等(附源码)

    Object value2 = map2.get(key); if (value2 == null || !value1.toString().equals(value2.toString())) { return false; } } return true; } } ``` 在这个源码中,`equals()`方法接收两个Map对象作为参数...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    Map提供了key到value的映射,一个Map中不能包含相同的key,每个key只能映射一个value。HashMap是一个非同步的Map实现类,它允许null,即null value和null key。 Hashtable和HashMap的区别在于,Hashtable是一个同步...

    java中map的使用实例

    在Java编程语言中,Map接口是集合框架的重要组成部分,它提供了键值对(key-value pairs)的存储方式。Map不是列表或数组,而是允许我们通过一个键(key)来查找对应的值(value)。本篇文章将深入讲解Map的使用实例...

    java中map集合的用法

    - `put(K key, V value)`: 将指定的键值对放入Map中,如果键已经存在,则替换旧值。 - `get(Object key)`: 返回与指定键关联的值,如果不存在则返回null。 - `containsKey(Object key)`: 检查Map是否包含指定的键。 ...

    JDK8新增便利的Map默认值方法Java开发Java经验

    Integer value = map.getOrDefault(key, defaultValue); ``` 2. `V putIfAbsent(K key, V value)`:这个方法用于插入一个键值对,但如果key已经存在,则不会覆盖原有值。这在并发编程中特别有用,可以避免多个线程...

    c++中map的基本用法和嵌套用法实例分析

    - 使用`insert`函数插入:`my_Map.insert(map, int&gt;::value_type(2, 2));`或`my_Map.insert(pair, int&gt;(3, 3));`,还可以使用`make_pair`简化写法:`my_Map.insert(make_pair, int&gt;("key", 4));` 4. **查找和修改...

Global site tag (gtag.js) - Google Analytics