HashMap相关

2018-04-20  本文已影响0人  萝卜枣

https://www.jianshu.com/p/45fa4e80b631
HashMap与HashTable
都实现了Map接口,但决定用哪一个之前先要弄清楚他们之间的分别,主要区别有:线程安全性,同步(synchronization),以及速度。

HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接收为null的键值和值),而hashtable则不行)。

HashMap是非synchronized,而hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。
由于Hashtable是线程安全的也是同步的,所以在单线程环境下它比HashMap慢。如果不需要同步,只需要单一线程,则使用HashMap性能要好过Hashtable。

HashMap和HashSet的区别
HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为set接口,list接口和Queue接口。它们有各自的特点,set的集合里不允许对象有重复的值,list允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法。
HashSet实现了set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有存储相等的对象。若没重写,将会使用默认方法。
add()

HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。Map接口有两个基本的实现,HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap则不能。HashMap允许键和值为null。
put()

区别:
HashMap实现了Map接口,HashSet实现了Set接口
HashMap存储键值对,HashSet仅仅存储对象
使用put方法将元素放入map中,使用add方法将元素放入set中
HashMap使用唯一键来获取对象,比较快

上一篇下一篇

猜你喜欢

热点阅读