Java الإنترفيس SortedMap في جافا

مقدمة

الإنترفيس SortedMap يرث من الإنترفيس Map. تم بناءه لتخزين العناصر بشكل Key / Value, و بترتيب تصاعدي ( Ascending ).

إذاً هنا كل عنصر يتم تخزينه يملك كائنين: الأول عبارة عن مفتاح ( key ) و الثاني عبارة قيمة ( value ).

في حال كانت قيم العناصر تمثل أرقام, عندها يتم ترتيبهم من العدد الأصغر إلى العدد الأكبر.
في حال كانت قيم العناصر تمثل نصوص أو كلمات أو أحرف, عندها يتم ترتيبهم ترتيباً أبجدياً.

كما أنه يحتوي على دوال جديدة غير موجودة في الإنترفيس Map.


نظرة عامة

  • بشكل عام, يستخدم لتخزين العناصر بشكل Key / Value.
  • يمكن للمفاتيح المختلفة أن تحتوي على نفس القيمة.
  • يملك دواله الخاصة إضافةً إلى الدوال التي ورثها من الإنترفيس Map.
  • بعض الدوال التي يملكها ترمي الإستثناء UnsupportedOperationException إذا تم استخدامهم بطريقة خاطئة.
  • يرمى الإستثناء ClassCastException في حال كان لا يمكن تحويل نوع الكائن إلى نوع آخر.
  • يرمى الإستثناء NullPointerException في حال تم إضافة القيمة null فيه لأنه لا يقبل القيمة null.
  • يرمى الإستثناء NoSuchElementException في حال كان كائن الـ SortedMap فارغاً و كنت تحاول إرجاع قيمة عنصر من عناصره.

دوال الإنترفيس SortedMap

الجدول التالي يحتوي على دوال الإنترفيس SortedMap.

الدالة مع تعريفها
public Object firstKey() ترجع مفتاح أول عنصر موجود في الكائن الذي قام باستدعائها.
ملاحظة: قيمته ستكون أصغر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي.
public Object lastKey() ترجع مفتاح آخر عنصر موجود في الكائن الذي قام باستدعائها.
ملاحظة: قيمته ستكون أكبر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي.
public SortedMap headMap(Object end) ترجع كائن نوعه SortedMap يحتوي على جميع عناصر الكائن الذي قام باستدعائها الموجودة قبل الكائن end.
public SortedMap tailMap(Object Start) ترجع كائن نوعه SortedMap يحتوي على جميع عناصر الكائن الذي قام باستدعائها إبتداءاً من الكائن start حتى آخر عنصر موجود فيه.
public SortedMap subMap(Object start, Object end) ترجع كائن نوعه SortedMap يحتوي على جميع عناصر الكائن الذي قام باستدعائها إبتداءاً من الكائن start وصولاً إلى الكائن end.
public Comparator comparator() ترجع كائن نوعه Comparator يمثل الإنترفيس المستخدم في مقارنة العناصر.
ترجع null في حال لم تقم بتغيير الإنترفيس الإفتراضي.

مثال شامل

في المثال التالي قمنا بإنشاء كائن من الكلاس TreeMap و الذي يرث من الإنترفيس SortedMap.
و قمنا باستخدام جميع دواله التي ذكرناها في الجدول السابق.


Main.java
import java.util.TreeMap;
import java.util.SortedMap;
 
public class Main {
 
    public static void main(String[] args) {
 
        // sm إسمه TreeSet هنا قمنا بإنشاء كائن من الكلاس
        SortedMap sm = new TreeMap();
 
        // تعمدنا عدم ترتيب القيم من الأصغر إلى الأكبر حتى ترى أنه سيرتبهم بشكل تلقائي .sm هنا قمنا بإضافة 5 قيم في الكائن
        sm.put(11, "Rola");
        sm.put(7, "Rayan");
        sm.put(15, "Sami");
        sm.put(2, "Ahmad");
        sm.put(6, "Mira");
 
        // لاحظ أنه قام بترتيبهم من الأصغر إلى الأكبر .sm هنا قمنا بعرض عناصر الكائن
        System.out.println("All keys/values: " + sm);
 
        // '8' الموجودة قبل المفتاح sm هنا قمنا بعرض جميع عناصر الكائن
        System.out.println("headMap(8):      " + sm.headMap(8));
 
        // '8' إبتداءاً من المفتاح sm هنا قمنا بعرض جميع عناصر الكائن
        System.out.println("tailMap(8):      " + sm.tailMap(8));
 
        // 'إبتداءاً من المفتاح '1' وصولاً إلى المفتاح '10 sm هنا قمنا بعرض جميع عناصر الكائن
        System.out.println("subMap(1,10):    " + sm.subMap(1, 10));
 
        // sm هنا قمنا بعرض أول مفتاح موجود في الكائن
        System.out.println("First key:       " + sm.firstKey());
 
        // sm هنا قمنا بعرض آخر مفتاح موجود في الكائن
        System.out.println("Last key:        " + sm.lastKey());
 
        // هنا قمنا بعرض الإنترفيس المستخدم في مقارنة العناصر
        System.out.println("Comparator():    " + sm.comparator());
 
    }
 
}
		

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

All keys/values: {2=Ahmad, 6=Mira, 7=Rayan, 11=Rola, 15=Sami}
headMap(8):      {2=Ahmad, 6=Mira, 7=Rayan}
tailMap(8):      {11=Rola, 15=Sami}
subMap(1,10):    {2=Ahmad, 6=Mira, 7=Rayan}
First key:       2
Last key:        15
Comparator():    null
		

الدورات

أدوات مساعدة

أقسام الموقع

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