1、HashMap 和 HashTable 区别

(1) 线程安全性不同
HashMap 是线程不安全的,HashTable 是线程安全的,其中的方法是 Synchronize 的,在多线程并发的情况下,可以直接使用 HashTable,但是使用 HashMap 时必须自己增加同步处理。

(2) 是否提供 contains 方法
HashMap 只有 containsValue 和 containsKey 方法。HashTable 有 contains、containsKey 和 containsValue 三个方法,其中 contains 和 containsValue方法功能相同。

(3) key 和 value 是否允许 null 值
Hashtable 中,key 和 value 都不允许出现 null 值。HashMap 中,null 可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为 null。

(4) 数组初始化和扩容机制
HashTable 在不指定容量的情况下的默认容量为 11,而 HashMap 为 16,Hashtable 不要求底层数组的容量一定要为 2 的整数次幂,而 HashMap 则要求一定为 2 的整数次幂。Hashtable 扩容时,将容量变为原来的 2 倍加 1,而 HashMap 扩容时,将容量变为原来的 2 倍。

2、TreeSet 和 HashSet 区别

HashSet 是采用 hash 表来实现的。其中的元素没有按顺序排列,add()、remove() 以及 contains() 等方法都是复杂度为 O(1) 的方法。

TreeSet 是采用树结构实现(红黑树)。元素是按顺序进行排列,add()、remove()以及 contains()等方法都是复杂度为 O(log(n)) 的方法。它还提供了一些方法来处理排序的 set,first(),last() 等。

3、List 的题

java 集合常见面试题

4、ArrayList 大小

java 集合常见面试题

5、ArrayList 扩容过程

java 集合常见面试题

相关文章:

  • 2021-09-12
  • 2022-01-19
  • 2022-02-25
  • 2021-11-25
  • 2021-11-28
猜你喜欢
  • 2021-08-07
  • 2021-06-05
  • 2021-12-20
  • 2021-11-18
相关资源
相似解决方案