java集合中HashMap、HashTable、HashSet的区别

HashMap基于hashing原理,通过put()和get()方法储存和获取对象。

HashMap和HashTable的区别

HashMap和HashTable都实现了Map接口。
主要的区别有:线程安全性,同步(synchronization),以及速度。
HashMap几乎可以等价于HashTable。
HashMap是非同步的,并且HashMap可以接受为null的键值(key)和值(value),而HashTable则不行。
HashTable是同步的,意味着HashTable是线程安全的,多个线程可以共享一个HashTable;而多个线程是不能共享HashMap的。
Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTable的enumerator迭代器。
HashMap可以通过下面的语句进行同步:Map m = Collections.synchronizeMap(hashMap);

HashMap和HashSet的区别

HashSet实现了Set接口,它不允许集合中有重复的值,HashMap实现了Map接口,Map接口对键值对进行映射。
HashSet扩展了HashMap,所以底层还是用到map存储,存储实现同map一致,HashMap储存键值,HashSet存储对象。

发布了144 篇原创文章 · 获赞 25 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/AdminGuan/article/details/102912526