JAVA里面有HashMap、HashTable、HashSet三种常用的Hash集合,由于经常性的使用,所以想了解一下三种集合的底层实现以及区别,在这里进行总结:
一:HashMap和HashTable的区别
1.HashTable是线程安全的,而HashMap是线程不安全的。
在Java中,我们new一个HashTable出来然后查看源码会发现,里面的实现方法都增加了synchronized关键字来确保线程同步,所以是线程安全的,但是HashMap当中却没有确保线程安全的机制。所以,在性能上来说,HashMap的性能比HashTable要高。我们在平时使用的时候,假如没有特殊的要求,尽量去使用HashMap进行操作。但是假设我们需要线程安全的HashMap应该怎么做呢?
a.在外部包装HashMap,实现同步
b.使用Map m = Collections.synchronizedMap(new HashMap(...));实现同步
c.使用HashTable