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不允许使用