转:

各种集合key,value能否为null

2019年03月12日 13:22:58 mingwulipo 阅读数 238
 

HashMap

key,value都可以为null

    static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

key只能有一个为null,多个key=null的会覆盖,value可以多个为null

        HashMap<Integer, Integer> map = new HashMap<>();
map.put(1, null);
map.put(2, null);
map.put(null, 1);
map.put(null, 2);
System.out.println(map);//{null=2, 1=null, 2=null}

Hashtable

key,value都不能为null

        // Make sure the value is not null
if (value == null) {
throw new NullPointerException();
} // Makes sure the key is not already in the hashtable.
Entry<?,?> tab[] = table;
int hash = key.hashCode();

直接调用key.hashcode方法,所以key不能为null
value为null,抛出空指针

ConcurrentHashMap

key,value都不能为null

        if (key == null || value == null) throw new NullPointerException();
int hash = spread(key.hashCode());

key或value为null,抛出空指针
key调用hashcode方法后,用spread方法二次hash

TreeMap

key不能为null,value可以为null

            if (key == null)
throw new NullPointerException();

key为null,抛出空指针

最新文章

  1. 做技术最自由,在IT最幸福!
  2. 使用PopupWindow实现Menu功能
  3. jQuery ajax - get(),getJSON(),post()方法
  4. return break continue
  5. imports,using,和include之间的区别
  6. 三星 note3销售地查询、销售地代码
  7. 关于jdbc Oracle数据库连接的URL错误
  8. POJ 3280 Cheapest Palindrome 简单DP
  9. 深入浅出KnockoutJS
  10. HTML标签类型及特点
  11. 云计算之路-阿里云上:访问阿里云CDN上的图片,自动跳转到百度首页
  12. DomeOS部署
  13. feemarker知识
  14. 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1
  15. Tribonacci UVA - 12470 (简单的斐波拉契数列)(矩阵快速幂)
  16. luogu2774 [网络流24题]方格取数问题 (最小割)
  17. 【译】第12节---数据注解-ConcurrencyCheck
  18. POJ--1699 Best Sequence(DP+dfs)
  19. Java--下载历史版本登录账户
  20. Socket通讯介绍

热门文章

  1. Django安装和介绍
  2. Oracle笔记(十) 约束
  3. 判断一个python字符串中是否包含中文字符
  4. linux——目录说明
  5. List、Set、Map 之间的区别是什么?(未完成)
  6. centos7 nginx设置开启启动
  7. R的数据结构--矩阵
  8. ak-2
  9. oracle之约束-主键、非空、唯一、check、外键、默认
  10. Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)