Java الكلاس Hashtable في جافا

مقدمة

الكلاس Hashtable يستخدم لتخزين العناصر بشكل Key / Value حيث يتم إعطاء مفتاح لكل قيمة يتم تخزينها بداخل الـ Hashtable.

هنا كل قيمة يتم تخزينها في كائن الـ Hashtable يجب إعطاءها Key غير مستخدم, لأن كل Key موضوع يسمح لك بالوصول لقيمة واحدة من القيم الموجودة في كائن الـ Hashtable.

إذاً الـ Hashtable كأنه جدول يتألف من عامودين, الأول يحتوي المفاتيح ( Keys ) و الثاني يحتوي على القيم ( Values ).

إذاً هنا كل عنصر يضاف في الـ Hashtable يجب أن يحتوي على كائنين, الأول يمثل المفتاح و الثاني يمثل قيمته.

كونستركتورات الكلاس Hashtable

الجدول التالي يحتوي على جميع الكونستركتورات الموجودين في الكلاس Hashtable.

الكونستركتور مع تعريفه
public Hashtable() هذا الكونستركتور الإفتراضي في الكلاس Hashtable, يستخدم لإنشاء كائن نوعه Hashtable ليس له حجم محدد.
إذاً في البداية يكون حجمه يساوي 0 لكنه يزيد كلما أضفنا فيه عنصر جديد.
public Hashtable(int size) يستخدم هذا الكونستركتور لتحديد حجم كائن الـ Hashtable الأولي الذي نريده أن يحجز له في الذاكرة.
الرقم الذي نضعه كـ Argument في هذا الكونستركتور يحدد عدد العناصر التي يمكن أن يحتويها كائن الـ Hashtable, و تذكر أن حجمه يزيد عند الحاجة.
public Hashtable(int size, float fillRatio) يستخدم هذا الكونستركتور لتحديد حجم كائن الـ Hashtable الأولي الذي نريده أن يحجز له في الذاكرة.
الرقم الذي نضعه مكان الباراميتر size يحدد عدد العناصر التي يمكن أن يحتويها كائن الـ Hashtable, و تذكر أن حجمه يزيد عند الحاجة.
الرقم الذي نضعه مكان الباراميتر fillRatio يمكن أن يكون بين 0.0f و 1.0f.
هنا يتم ضرب المتغيرين size و fillRatio ببعضهم, ناتج عملية الضرب يحدد متى سيتم زيادة حجم كائن الـ Hashtable في الذاكرة.
public Hashtable(Map m) يستخدم هذا الكونستركتور لإنشاء كائن نوعه Hashtable يحتوي على عناصر كائن الـ Map الذي نمرره له كـ Argument.

دوال الكلاس Hashtable

الجدول التالي يحتوي على جميع دوال الكلاس Hashtable.

الدالة مع تعريفها
public void clear() تمسح جميع العناصر الموجودة في كائن الـ Hashtable.
public Object clone() تنشئ نسخة من كائن الـ Hashtable.
public boolean contains(Object value) ترجع true إذا كان كائن الـ Hashtable يحتوي على القيمة التي نضعها لها كـ Argument.
public boolean containsValue(Object value) ترجع true إذا كان كائن الـ Hashtable يحتوي على القيمة التي نضعها لها كـ Argument تماماً مثل الدالة contains().
معلومة تقنية: هذه الدالة ورثها الكلاس Hashtable من الإنترفيس Map, و فعل لها Override لتستدعي الدالة contains() فقط, لذلك لا يوجد أي فرق بينهما.
public boolean containsKey(Object key) ترجع true إذا كان كائن الـ Hashtable يحتوي على المفتاح الذي نضعه لها كـ Argument.
public Enumeration elements() ترجع كائن نوع Enumeration يحتوي على جميع قيم الـ Hashtable.
public Enumeration keys() ترجع كائن نوع Enumeration يحتوي على جميع مفاتيح الـ Hashtable.
public Object get(Object key) ترجع قيمة المفتاح الذي نمرره لها كـ Argument.
في حال كان كائن الـ Hashtable لا يحتوي على المفتاح الذي مررناه لها, ترجع القيمة null.
public boolean isEmpty() ترجع true في حال كان كائن الـ Hashtable فارغاً.
public void put(Object key, Object value) تستخدم لإضافة عنصر جديد في كائن الـ Hashtable.
public Object remove(Object key) تحذف العنصر الذي يملك المفتاح الذي نمرره لها كـ Argument.
public int size() ترجع عدد العناصر الموجودة في كائن الـ Hashtable.
public String toString() ترجع كائن نوعه String يمثل العناصر الموجودة في كائن الـ Hashtable.

مثال شامل

في المثال التالي قمنا بتعريف كائن نوعه Hashtable, إسمه h, ثم أدخلنا فيه 12 عنصر.

بعدها قمنا بتخزين جميع المفاتيح في كائن نوعه Enumeration, إسمه keys.
و قمنا أيضاً بتخزين جميع القيم في كائن نوعه Enumeration, إسمه values.

بعدها عرضناهم كجدول يتألف من عامودين من خلال الحلقة while.

في الأخير قمنا بالبحث عن قيمة مفتاح أدخالناه سابقاً.


Main.java
import java.util.Hashtable;             // Hashtable هنا قمنا باستدعاء الكلاس
import java.util.Enumeration;           // Enumeration هنا قمنا باستدعاء الكلاس
 
public class Main {
 
    public static void main(String[] args) {
 
        // و الذي سنضع فيه كود البلد و إسمه h إسمه Hashtable هنا قمنا بتعريف كائن نوعه
        Hashtable h = new Hashtable();
 
        // كل عنصر يحتوي على كود البلد كمفتاح و إسمه كقيمة .h هنا قمنا بإضافة 12 عنصر في الكائن
        h.put("+961", "Lebanon");
        h.put("+962", "Jordan");
        h.put("+963", "Syria");
        h.put("+964", "Iraq");
        h.put("+965", "Kuwait");
        h.put("+966", "KSA");
        h.put("+967", "Yaman");
        h.put("+968", "Oman");
        h.put("+970", "Palestine");
        h.put("+212", "Morocco");
        h.put("+281", "Libya");
        h.put("+20",  "Egypt");
 
        // أي وضعنا اكواد البلاد فيه .keys بداخل الكائن h هنا قمنا بتخزين جميع مفاتيح الكائن
        Enumeration keys  = h.keys();
 
        // أي وضعنا أسماء البلاد فيه .values بداخل الكائن h هنا قمنا بتخزين جميع قيم الكائن
        Enumeration values = h.elements();
 
        System.out.println("The table below contains all Codes & Countries \n");
        System.out.println("---------------------");
        System.out.println("Code \t | Country");
        System.out.println("---------------------");
 
        // لا يزال يحتوي على مفاتيح keys هنا أنشأنا حلقة تستمر في تكرار نفسها طالما أن الكائن
        // الفكرة هنا المرور على جميع المفاتيح الموجودة و عرض كل مفتاح موجود و قيمته
        while( keys.hasMoreElements() ) {
            System.out.println(keys.nextElement() + "\t | " + values.nextElement());
        }
        System.out.println("---------------------\n");
 
 
        // KSA هنا قمنا بالبحث عن إسم البلد الذي يملك الكود 996+ فكان الجواب
        System.out.println("Which Country use the code +966 ?");
        System.out.println(h.get("+966"));
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

The table below contains all Codes & Countries

---------------------
Code     | Country
---------------------
+281     | Libya
+966     | KSA
+965     | Kuwait
+964     | Iraq
+963     | Syria
+962     | Jordan
+961     | Lebanon
+212     | Morocco
+20      | Egypt
+970     | Palestine
+968     | Oman
+967     | Yaman
---------------------

Which Country use the code +966 ?
KSA 
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة