经典面试题-HashMap和HashTable区别

本文引用自霍格沃兹测试开发学社录播课

Java经典面试题-HashMap、HashTable 区别

霍格沃兹测试开发
http://ceshiren.com

面试相关问题

  • Hashtable、HashMap、TreeMap 有什么不同?
  • Hashtable、HashMap的区别?

共同点

  • 最常见的 Map 实现
  • 以==键值对==的形式存储和操作数据的容器类型

不同点-元素特性

  • Hashtable
    • ==不支持 null 键和值==
  • HashMap
    • ==支持 null 键和值==
  • TreeMap
    • 红黑树

不同点-顺序特性

  • HashTableHashMap无序
  • TreeMap默认升序排序

不同点-初始化与增长方式

  • HashTable不指定容量,默认容量为11
    • 容量不一定为2的整数次幂
    • 扩容: 2n+1
  • HashMap不指定容量,默认容量为16
    • 容量一定为2的整数次幂
    • 扩容: 2n

不同点-线程安全性

  • HashTable线程安全
  • HashMap不支持线程的同步

HashMap底层设计实现

  • put方法

总结

面试官可能会问:HashMap 和 HashTable 的区别是什么?

  1. 都是 Map集合的实现类,以键值对的形式存储和操作数据;
  2. HashTable是线程同步的,不支持键值为null,由于线程同步导致性能开销比较大;
  3. HashMap是不同步的,支持键值为null,行为上和HashTable大概一致,可支持多线程,对应效率高;
  4. HashTable初始容量为11,HashMap初始容量是16。: