ما الفرق بين HashMap و Hashtable في Java؟
مرحبًا أيها الزملاء! بدأت في دراسة Java Collections Framework ووجدت فئتين متشابهتين: HashMap و Hashtable. كلاهما يبدو أنهما يطبقان واجهة Map ويخزنان أزواج المفتاح-القيمة. لكن لاحظت أن في الكود الحديث الجميع يستخدم HashMap، بينما يعتبر Hashtable قديمًا.
كتبت مثالًا بسيطًا حيث يتصرف كلا الفئتين بنفس الطريقة:
```java
import java.util.*;
public class MapTest {
public static void main(String[] args) {
Map hashMap = new HashMap<>();
hashMap.put("key1", "value1");
hashMap.put(null, "nullValue");
System.out.println("HashMap: " + hashMap.get("key1"));
Hashtable hashtable = new Hashtable<>();
hashtable.put("key1", "value1");
// hashtable.put(null, "nullValue"); // هذا سيسبب NullPointerException
System.out.println("Hashtable: " + hashtable.get("key1"));
}
}
```
أرى أن HashMap يسمح بمفاتيح null، بينما Hashtable لا يسمح. كما سمعت أن