Qual é a diferença entre HashMap e Hashtable em Java?
Olá a todos! Acabei de começar a estudar o Java Collections Framework e fiquei confuso com duas classes semelhantes — HashMap e Hashtable. Ambas implementam a interface Map e, aparentemente, fazem a mesma coisa: armazenam pares key-value. Mas ouvi dizer que existem diferenças importantes entre elas, e que Hashtable é considerada obsoleta.
Escrevi um pequeno código de teste, mas não vejo diferença:
```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"); // funciona
System.out.println("HashMap: " + hashMap);
// Hashtable
Map hashtable = new Hashtable<>();
hashtable.put("key1", "value1");
// hashtable.put(null, "nullValue"); // lança NullPointerException?
System.out.println("Hashtable: " + hashtable);
}
}
```
Por que Hashtable não permite usar