¿Cuál es la diferencia entre HashMap y Hashtable en Java?
¡Hola a todos! Acabo de empezar a aprender Java Collections Framework y me confundí con dos clases similares: HashMap y Hashtable. Ambas implementan la interfaz Map y, al parecer, hacen lo mismo: almacenan pares clave-valor. Pero he oído que hay diferencias importantes entre ellas, y que Hashtable se considera obsoleto.
Escribí un pequeño código de prueba, pero no veo la diferencia:
```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"); // lanza NullPointerException?
System.out.println("Hashtable: " + hashtable);
}
}
```
¿Por qué Hashtable no permite usar