بشكل عام ، الخريطة هي بنية بيانات تتكون من أزواج القيمة الرئيسية ، وكل مفتاح فريد من نوعه في المجموعة. دعنا نستخدم K و V لتمثيل المفاتيح والقيم لتوضيح القضايا الرئيسية التسعة حول الخريطة في Java.
0. تحويل الخريطة إلى نوع القائمة
في Java ، توفر واجهة MAP ثلاث طرق للحصول على مجموعات: مجموعة المفاتيح ، مجموعة القيمة ، ومجموعة القيمة الرئيسية. يمكن تحويلها جميعًا إلى نوع القائمة حسب طريقة مُنشئ أو addall (). يوضح الرمز التالي كيفية إنشاء قائمة ArrayList من الخريطة:
// Key Listlist keylist = new ArrayList (map.keyset ()) ؛ // قائمة قائمة القيمة valuelist = new ArrayList (map.valueset ()) ؛ // مفتاح قائمة الإدخال القائمة = new ArrayList (map.entryset ()) ؛
1. اجتياز الخريطة من خلال الدخول
وبهذه الطريقة في جافا موجودة حيث يسمى أزواج القيمة الرئيسية الخريطة. Map.EntrySet () إرجاع مجموعة القيمة الرئيسية ، وهي وسيلة فعالة للغاية لاجتيازها.
لـ (إدخال الإدخال: map.entryset ()) {// get keyk key = intern.getKey () ؛ // get valuev value = intplic.getValue () ؛} يتم استخدام ITERATOR أيضًا بشكل متكرر ، خاصةً قبل JDK1.5
ITerator ITR = map.entryset (). iterator () ؛ بينما (itr.hasnext ()) {interpt intply = itr.next () ؛ // get keyk key = intpling.getKey () ؛ // get valuev value = intply.getValue () ؛} 2. فرز الخريطة بواسطة المفتاح
يتطلب الفرز عمليات متكررة على KE. طريقة واحدة هي تنفيذها من خلال المقارنة:
قائمة قائمة = جديد arrayList (map.entryset ()) ؛ collections.sort (قائمة ، مقارن جديد () {OverRidepublic int (الإدخال e1 ، الإدخال e2) {return e1.getKey (). compareto (e2.getKey ()) ؛}}) ؛ هناك طريقة أخرى تتمثل في استخدام SortedMap ، ولكن يجب تنفيذ الواجهة المماثلة.
sortedMap sortedMap = new Treemap (New Comparator () {Overridepublic int Compare (K K1 ، K K2) {return K1.compareto (K2) ؛}}) ؛ sortedmap.putall (MAP) ؛3. فرز الخريطة مع القيمة <br /> وهذا يشبه إلى حد ما النقطة السابقة ، الرمز هو كما يلي:
قائمة قائمة = ArrayList جديد (map.entryset ()) ؛ collections.sort (قائمة ، مقارن جديد () {OverRidepublic int (الإدخال e1 ، الإدخال e2) {return e1.getValue (). المقارنة (e2.getValue ()) ؛}}) ؛4. تهيئة خريطة ثابتة ثابتة
عندما ترغب في إنشاء خريطة ثابتة عالمية ، لدينا طريقتان ، وهي آمنة لخيط الخيط.
في Test1 ، على الرغم من أننا نعلن أن الخريطة ثابتة ، لا يزال بإمكاننا تغيير قيمتها عند تهيئتها ، تمامًا مثل test1.map.put (3 ، "ثلاثة") ؛
في Test2 ، قمنا بتعيينه ليكون غير معدل من خلال فئة داخلية ، لذلك عندما نقوم بتشغيل Test2.map.put (3 ، "ثلاثة") ، سوف يرمي أ
الاستثناء غير المدعوم يحظر عليك الاستثناء من التعديل. الفئة العامة test1 {خريطة خريطة نهائية ثابتة ؛ ثابت {map = new hashmap () ؛ map.put (1 ، "واحد") ؛ map.put (2 ، "اثنان") ؛}} اختبار الفئة العامة 2 {خريطة خريطة ثابتة خاصة ؛ static {map amap = new hashmap () ؛ amap.put (1 ، "واحد") collections.unmodiFiAbsap (AMAP) ؛}} 5. الفرق بين hashmap و treemap و hashtable
في واجهة الخريطة ، هناك ثلاثة تطبيقات: hashmap و treemap و hashtable.
هم مختلفون. للحصول على التفاصيل ، يرجى الرجوع إلى المقالة "HashMap مقابل Treemap مقابل Hashtable مقابل LinkedHashMap".
6. استعلام عكسي في الخريطة
بعد إضافة زوج قيمة مفتاح إلى الخريطة ، يعني ذلك أنه في الخريطة ، يتوافق المفتاح والقيمة مع واحد ، والمفتاح يتوافق مع القيمة. لكن في بعض الأحيان نحتاج إلى عكس الاستعلام ، مثل البحث عن مفتاحه من خلال قيمة معينة. تسمى بنية البيانات هذه خريطة Bididirectional. لسوء الحظ ، JDK لا يدعمها.
توفر Apache و Guava بشكل مشترك تنفيذ خريطة ثنائية الاتجاه ، حيث ينص على أن كل من المفاتيح والقيم يجب أن تكون العلاقة 1: 1.
7. نسخ الخريطة
توفر Java العديد من الطرق التي يمكن أن تدرك تكرار الخريطة ، ولكن قد لا تتم مزامنة هذه الطرق في أي وقت. ببساطة ، هذا هو التغيير الذي يحدث في الخريطة ، ويبقى النسخ كما هو. فيما يلي طريقة تنفيذ فعالة نسبيًا:
map copiedMap = collections.synchronizedMap (MAP) ؛
بالطبع هناك طريقة أخرى ، وهي استنساخ. لكن منشئ Java لدينا Josh Bloch لا يوصي بهذه الطريقة. قال ذات مرة في مقابلة حول استنساخ الخريطة: يتم توفير أساليب الاستنساخ في العديد من الفصول لأن الناس يحتاجون إليها. ومع ذلك ، فإن الاستنساخ محدود للغاية وغالبًا ما يسبب تأثيرًا غير ضروري. (النص الأصلي "نسخ مُنشئ مقابل الاستنساخ")
8. إنشاء خريطة فارغة
إذا تم تعيين هذه الخريطة على عدم توفرها ، فيمكن تنفيذها بما يلي
الخريطة = collections.emptymap () ؛
على العكس من ذلك ، عندما نتمكن من استخدامه ، يمكننا
الخريطة = new hashmap () ؛
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.