Javaالإنترفيس SortedMap في جافا
- مقدمة
- دوال الإنترفيس SortedMap
- مثال شامل
مقدمة
الإنترفيس SortedMap يرث من الإنترفيس Map. تم بناءه لتخزين العناصر بشكل Key / Value, و بترتيب تصاعدي ( Ascending ).
إذاً هنا كل عنصر يتم تخزينه يملك كائنين: الأول عبارة عن مفتاح ( key ) و الثاني عبارة قيمة ( value ).
في حال كانت قيم العناصر تمثل أرقام, عندها يتم ترتيبهم من العدد الأصغر إلى العدد الأكبر.
	في حال كانت قيم العناصر تمثل نصوص أو كلمات أو أحرف, عندها يتم ترتيبهم ترتيباً أبجدياً.
كما أنه يحتوي على دوال جديدة غير موجودة في الإنترفيس Map.
نظرة عامة
- بشكل عام, يستخدم لتخزين العناصر بشكل Key / Value.
- يمكن للمفاتيح المختلفة أن تحتوي على نفس القيمة.
- يملك دواله الخاصة إضافةً إلى الدوال التي ورثها من الإنترفيس Map.
- بعض الدوال التي يملكها ترمي الإستثناء UnsupportedOperationException إذا تم استخدامهم بطريقة خاطئة.
- يرمى الإستثناء ClassCastException في حال كان لا يمكن تحويل نوع الكائن إلى نوع آخر.
- يرمى الإستثناء NullPointerException في حال تم إضافة القيمة nullفيه لأنه لا يقبل القيمةnull.
- يرمى الإستثناء NoSuchElementException في حال كان كائن الـ SortedMapفارغاً و كنت تحاول إرجاع قيمة عنصر من عناصره.
دوال الإنترفيس SortedMap
	الجدول التالي يحتوي على دوال الإنترفيس SortedMap.
| الدالة مع تعريفها | |
|---|---|
| 1 | public Object firstKey()ترجع مفتاح أول عنصر موجود في الكائن الذي قام باستدعائها.ملاحظة: قيمته ستكون أصغر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي. | 
| 2 | public Object lastKey()ترجع مفتاح آخر عنصر موجود في الكائن الذي قام باستدعائها.ملاحظة: قيمته ستكون أكبر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي. | 
| 3 | public SortedMap headMap(Object end)ترجع كائن نوعهSortedMapيحتوي على جميع عناصر الكائن الذي قام باستدعائها الموجودة قبل الكائنend. | 
| 4 | public SortedMap tailMap(Object Start)ترجع كائن نوعهSortedMapيحتوي على جميع عناصر الكائن الذي قام باستدعائها إبتداءاً من الكائنstartحتى آخر عنصر موجود فيه. | 
| 5 | public SortedMap subMap(Object start, Object end)ترجع كائن نوعهSortedMapيحتوي على جميع عناصر الكائن الذي قام باستدعائها إبتداءاً من الكائنstartوصولاً إلى الكائنend. | 
| 6 | public Comparator comparator()ترجع كائن نوعهComparatorيمثل الإنترفيس المستخدم في مقارنة العناصر.ترجع nullفي حال لم تقم بتغيير الإنترفيس الإفتراضي. | 
مثال شامل
في المثال التالي قمنا بإنشاء كائن من الكلاس TreeMap و الذي يرث من الإنترفيس SortedMap.
	و قمنا باستخدام جميع دواله التي ذكرناها في الجدول السابق.
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 
                