Avatar ·

ما الفرق بين 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 لا يسمح. كما سمعت أن