1    HashMap和HashTable的区别

HashMap和Hashtable都是Java中的Map接口的实现类,它们的主要区别如下:

1. 线程安全性:Hashtable是线程安全的,而HashMap不是。Hashtable的所有方法都是同步的,因此在多线程环境下使用Hashtable可以避免并发问题,但是这也会导致性能下降。而HashMap的方法不是同步的,因此在多线程环境下需要自己进行同步处理。

2. null值:Hashtable不允许键或值为null,否则会抛出NullPointerException异常。而HashMap允许键或值为null,但是需要注意,如果键为null,则只能放在第一个位置,如果键不为null,则根据hash值放在对应的位置。

3. 迭代器:Hashtable的迭代器是通过Enumeration实现的,而HashMap的迭代器是通过Iterator实现的。Iterator比Enumeration更加灵活,因此HashMap的迭代器可以使用更多的方法。

4. 继承关系:Hashtable是Dictionary类的子类,而HashMap是AbstractMap类的子类。Dictionary类已经被废弃,因此Hashtable也不再推荐使用。

综上所述,如果需要在多线程环境下使用Map,可以选择Hashtable,否则可以选择HashMap。

 

现在再用的是ConCurrentHashMap

 

2    哈希表(HashTable)底层是什么数据结构实现的?

1.7之前是(数组+链表)

1.8之后(含)是(数组+链表+红黑树)

posted on 2024-05-09 11:09  菜鸟乙  阅读(11)  评论(0)    收藏  举报