البرمجة

تجنب NullPointerException في Hashtable بلغة الجافا

في الكود الذي قدمته، تحدث استثناء NullPointerException عند استخدام الطريقة get للكائن من نوع Hashtable. الشيء الذي يمكن أن يكون سببًا لحدوث هذا الاستثناء هو محاولة الوصول إلى قيمة لمفتاح غير موجود في الجدول.

عند التحقق من الكود الذي قدمته، يتضح أنك تقوم بتحديث Hashtable باستخدام القيم الحالية لكل مفتاح. ومع ذلك، قد يكون السبب في حدوث NullPointerException هو أن مفتاح معين غير موجود في الجدول عند أول استدعاء للدالة get، وهذا يحدث قبل أن يتم إضافة أي قيم إلى الجدول.

لتجنب هذا الخطأ، يفضل التحقق من وجود المفتاح في الجدول قبل استخدام الدالة get. يمكنك تحقق من وجود المفتاح باستخدام الدالة containsKey كما يلي:

java
List l = new ArrayList(); // إضافة القيم إلى l Hashtable h = new Hashtable(); for (int i = 0; i < l.size(); i++) { String item = l.get(i); // التحقق من وجود المفتاح في الجدول if (h.containsKey(item)) { int value = h.get(item); h.put(item, ++value); } else { // إذا كان المفتاح غير موجود، قم بإضافته إلى الجدول مع قيمة افتراضية h.put(item, 1); } }

باستخدام هذا الأسلوب، يمكنك تجنب استثناء NullPointerException الناتج عن محاولة الوصول إلى مفتاح غير موجود في الجدول.

المزيد من المعلومات

إن استخدامك لكائن Hashtable يظهر أنك تفضل استخدام هذه الهيكلة البيانية لتخزين الأزواج . يجب أن تلاحظ أن Hashtable هو جزء من واجهة برمجة التطبيقات في لغة الجافا، وهو يقدم هيكل بيانات يستخدم لتخزين البيانات بطريقة يمكن البحث فيها بسرعة.

في الكود الخاص بك، قمت بتكوين Hashtable باستخدام النوع String كمفتاح والنوع Integer كقيمة. ولكن يبدو أن هناك استثناءً من نوع NullPointerException يحدث عند محاولة الوصول إلى القيمة المرتبطة بمفتاح معين باستخدام الدالة get.

الحل السابق تناول كيفية التحقق من وجود المفتاح باستخدام containsKey قبل استخدام الدالة get. ومع ذلك، يمكن أيضًا أن تكون هناك طرق أخرى لتحسين وتبسيط الكود.

على سبيل المثال، يمكنك استخدام حلقة for-each لتبسيط الكود وجعله أكثر قراءة. هنا هو مثال:

java
List stringList = new ArrayList<>(); // قم بإضافة القيم إلى stringList Hashtable hashtable = new Hashtable<>(); for (String item : stringList) { // التحقق من وجود المفتاح في الجدول if (hashtable.containsKey(item)) { int value = hashtable.get(item); hashtable.put(item, value + 1); } else { // إذا كان المفتاح غير موجود، قم بإضافته إلى الجدول مع قيمة افتراضية hashtable.put(item, 1); } }

هذا الكود يستخدم حلقة for-each للتنقل عبر عناصر stringList بشكل أكثر أناقة، ويقوم بتحديث قيم المفاتيح في hashtable بناءً على وجود المفتاح أو عدم وجوده.

بهذا، يمكنك تجنب استثناءات NullPointerException وضمان أن الكود يعمل بشكل صحيح على جميع البيانات.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!