HashMap和Hashtable的区别?

HashMap与Hashtable的区别类似于ArrayList与Vector的区别。

Hashtable与Vector都是JDK 1.0就有一个一个古老的集合,因此Hashtable是一个继承自Dictionary的古老集合。

从JDK 1.2引入集合框架的Map接口之后,Java让Hashtable也实现了Map接口,因此Hashtable也新增实现了一些Map接口中定义的方法。实际上Hashtable与HashMap底层的实现很相似,它们都是基于Hash表的实现。

HashMap与Hashtable的区别主要有如下两点:

A.HashMap允许使用null作为key或value,而Hashtable不允许。

B.HashMap是线程不安全的,因此性能较好;但Hashtable是线程安全的,因此性能较差。

实际上,实际在多线程环境下,Java提供了Collections工具类把HashMap包装成线程安全的类,因此依然应该使用HashMap,如下代码所示:

Map map = Collections. synchronizedMap(new HashMap());

简单的说,编程时应该尽量避免使用Hashtable,除非在一个古老的API中强制要求Hashtable。

posted @ 2020-12-07 00:32  咔啡  阅读(142)  评论(0)    收藏  举报