مقدمة
الكلاس LinkedHashMap
يرث من الكلاس HashMap
تم تصميمه فقط للحفاظ على ترتيب العناصر التي يتم إدخالها فيه.
و هو يملك نفس الأشياء التي يملكها الكلاس HashMap
.
الكلاس LinkedHashMap
يستخدم لتخزين العناصر بشكل Key / Value و الحفاظ على الترتيب الذي تم فيه إدخال هذه العناصر.
ملاحظة: الـ LinkedHashMap
يمكنه إمتلاك مفتاح واحد نوعه null
, و يمكن وضع القيمة null
كقيمة لأي مفتاح موجود فيه.
بناؤه
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
K
يقصد بها نوع الكائنات التي تمثل مفاتيح.
V
يقصد بها نوع الكائنات التي تمثل قيم.
إذاً الكلاس LinkedHashMap
يرث من الكلاس HashMap
, و يطبق الإنترفيسات Map
.
مثال شامل
في المثال التالي قمنا بتعريف كائن نوعه LinkedHashMap
, إسمه lhm
, ثم أدخلنا فيه 12 عنصر.
بعدها قمنا بتخزين جميع المفاتيح في كائن نوعه Iterator
, إسمه keys
.
و قمنا أيضاً بتخزين جميع القيم في كائن نوعه Iterator
, إسمه values
.
بعدها عرضناهم كجدول يتألف من عامودين من خلال الحلقة while
.
في الأخير قمنا بالبحث عن قيمة مفتاح أدخالناه سابقاً.
Main.java
import java.util.LinkedHashMap; // LinkedHashMap هنا قمنا باستدعاء الكلاس
import java.util.iterator; // iterator هنا قمنا باستدعاء الإنترفيس
public class Main {
public static void main(String[] args) {
// و الذي سنضع فيه كود البلد و إسمه lhm إسمه LinkedHashMap هنا قمنا بإنشاء كائن نوعه
LinkedHashMap lhm = new LinkedHashMap();
// كل عنصر يحتوي على كود البلد كمفتاح و إسمه كقيمة . لاحظ لاحقاً أنه سيتم عرضهم بنفس الترتيب الذي أدخلوا فيه .lhm هنا قمنا بإضافة 12 عنصر في الكائن
lhm.put("+961", "Lebanon");
lhm.put("+962", "Jordan");
lhm.put("+963", "Syria");
lhm.put("+964", "Iraq");
lhm.put("+965", "Kuwait");
lhm.put("+966", "KSA");
lhm.put("+967", "Yaman");
lhm.put("+968", "Oman");
lhm.put("+970", "Palestine");
lhm.put("+212", "Morocco");
lhm.put("+281", "Libya");
lhm.put("+20", "Egypt");
// أي وضعنا اكواد البلاد فيه .keys بداخل الكائن lhm هنا قمنا بتخزين جميع مفاتيح الكائن
Iterator keys = lhm.keySet().iterator();
// أي وضعنا أسماء البلاد فيه .values بداخل الكائن lhm هنا قمنا بتخزين جميع قيم الكائن
Iterator values = lhm.values().iterator();
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.hasNext() ) {
System.out.println(keys.next() + "\t | " + values.next());
}
System.out.println("---------------------\n");
// KSA هنا قمنا بالبحث عن إسم البلد الذي يملك الكود 996+ فكان الجواب
System.out.println("Which Country use the code +966 ?");
System.out.println(lhm.get("+966"));
}
}
سنحصل على النتيجة التالية عند التشغيل.
The table below contains all Codes & Countries
---------------------
Code | Country
---------------------
+961 | Lebanon
+962 | Jordan
+963 | Syria
+964 | Iraq
+965 | Kuwait
+966 | KSA
+967 | Yaman
+968 | Oman
+212 | Morocco
+970 | Palestine
+281 | Libya
+20 | Egypt
---------------------
Which Country use the code +966 ?
KSA