HashMap浅入理解

Posted lijingran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap浅入理解相关的知识,希望对你有一定的参考价值。

HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null,与之对应的是Hashtable,(注意大小写:不是HashTable),Hashtable不能将键和值设为null,否则运行时会报空指针异常错误;
HashMap线程不安全,Hashtable线程安全
Hash家族必须一次性两个值存储,就是所谓的键值对.
但是呢,Hash家族内部分为了几个小家族,分别是HashMap,Hashtable,TreeMap.
这几个家族呢,对键值对能不能存储null这种不是很安全的"买卖"有不一样的行动.
其中的HashMap家族与Hashtable、TreeMap不同,认为没有风险就没有利润!于是乎,准许自己的键值对都可以为null!
Hashtable与TreeMap一看SUN国王居然默许了HashMap的冒险行为,使得HashMap家族的利润大大增加,这两个家族也不甘寂寞,于是乎也就允许了自己的键值对可以为"",但是不能触碰null的界限.

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,

主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap 把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 

以上是关于HashMap浅入理解的主要内容,如果未能解决你的问题,请参考以下文章

由浅入深理解java集合——集合 Map

HashMap的原理分析

[笔记]为啥hashmap查询速度快? 如何理解hashmap的散列?

深入理解HashMap上篇

[JavaSE 源码分析] 关于HashMap的个人理解

HashMap的理解