HashMapHashSetHashtable key/value终极总结

Posted codegod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMapHashSetHashtable key/value终极总结相关的知识,希望对你有一定的参考价值。

涉及到Hash,即通过Key的哈希值,存取对应value。

注意,同一个key的哈希值必须唯一,不可变。

 

1、HashMap,key为null时,存在tab[0]中。

value可为空,key的hash不同的话,可存多个。

 

2、HashSet,采用HashMap,add(value)即采用HashMap的put(value, false)方法,

就是将value作为HashMap的key存入。可存null,只能存一个。

 

3、Hashtable,多线程安全,synchronized修饰,底层采用map.entry,

源码:value为null都为抛异常。key为null,取其hash为报错。

原因:因为可能涉及多线程,如果value为null,另一个线程取值,就不知道是取到还是没取到。

 

当然,另一个线程安全的CurrentHashMap,key或者value为null,都不可。原因同Hashtable。

以上是关于HashMapHashSetHashtable key/value终极总结的主要内容,如果未能解决你的问题,请参考以下文章

C语言 计算∑(k=1—100)k+∑(k=1—50)k²+∑(k=1—10)1/k的值

求f(k)=k^k(k=1...n)的前n项和

正交试验最后有大K和小k,其中小k值怎么计算

若K为整型,以下while循环执行( )次K=0while (K=0) K=K-1

已知有三个整数,他们的和小于50,每两个数的和分别是K+20 K+15和K+31,其中K是一个两位数,求K。

关于组合 C(N, K) = C(N - 1, K) + C(N - 1, K - 1) 的理解