Avatar ·

HashMap和Hashtable在Java中有什么区别?

大家好!我刚开始学习Java Collections Framework,对两个相似的类——HashMap和Hashtable感到困惑。它们都实现了Map接口,看起来做的是同一件事:存储键值对。但我听说它们之间有重要的区别,而且Hashtable被认为是过时的。 我写了一个小的测试代码,但没有看到区别: ```java import java.util.*; public class TestMap { public static void main(String[] args) { // HashMap Map hashMap = new HashMap<>(); hashMap.put("key1", "value1"); hashMap.put(null, "nullValue"); // 可以工作 System.out.println("HashMap: " + hashMap); // Hashtable Map hashtable = new Hashtable<>(); hashtable.put("key1", "value1"); // hashtable.put(null, "nullValue"); // 会抛出NullPointerException? System.out.println("Hashtable: " + hashtable); } } ``` 为什么Hashtable不允许使用