فيما يتعلق بالطرق الأربع المحددة لاجتياز الخريطة في Java، يرجى الاطلاع على الشرح التفصيلي أدناه.
الطريقة الأولى: هذه هي الطريقة الأكثر شيوعًا والأفضل في معظم الحالات للاجتياز. يُستخدم عندما يكون المفتاح والقيمة مطلوبين.
Map<Integer, Integer> Map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> input : Map.entrySet()) { System.out.println("Key = " + input. getKey() + ", Value = " +entry.getValue());
الطريقة الثانية تعبر المفاتيح أو القيم في حلقة لكل حلقة.
إذا كنت بحاجة فقط إلى المفاتيح أو القيم الموجودة في الخريطة، فيمكنك التنقل عبر مجموعة المفاتيح أو القيم بدلاً من استخدام مجموعة الإدخال.
Map<Integer, Integer> Map = new HashMap<Integer, Integer>(); // اجتياز المفاتيح في الخريطة for (Integer key :map.keySet()) { System.out.println("Key = " + key ) } // اجتياز القيم في الخريطة for (Integer value :map.values()) { System.out.println("Value = " + value });
تتميز هذه الطريقة بأداء أفضل قليلاً من اجتياز الإدخال (أسرع بنسبة 10٪)، كما أن الكود أكثر وضوحًا.
تستخدم الطريقة الثالثة Iterator للاجتياز
استخدم الأدوية العامة :
Map<Integer, Integer> Map = new HashMap<Integer, Integer>(); Iterator<Map.Entry<Integer, Integer>> inputs = Map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<Integer, Integer> الإدخال = الإدخالات.next(); System.out.println("Key = " +entry.getKey() + "، القيمة = " + input.getValue())؛ }
بدون استخدام الأدوية العامة:
خريطة الخريطة = إدخالات HashMap () جديدة؛ Integer)entry.getKey(); Integer value = (Integer)entry.getValue(); System.out.println("Key = " + key + "، Value = " + القيمة)؛ }
يمكنك أيضًا تطبيق نفس الأسلوب على مجموعات المفاتيح والقيم.
يبدو هذا النهج زائدا عن الحاجة ولكن له مزاياه. أولًا، هذه هي الطريقة الوحيدة لاجتياز الخريطة في الإصدارات القديمة من Java. فائدة أخرى هي أنه يمكنك استدعاء iterator.remove() لحذف الإدخالات أثناء العبور، وهو ما لا تستطيعه الطريقتان الأخريان. وفقًا لـ javadoc، إذا حاولت استخدام هذه الطريقة في كل اجتياز، فإن النتائج لا يمكن التنبؤ بها.
من منظور الأداء، تشبه هذه الطريقة أداء كل اجتياز (أي الطريقة 2).
الطريقة الرابعة: الاجتياز من خلال البحث عن القيم بواسطة المفتاح (كفاءة منخفضة)
Map<Integer, Integer> Map = new HashMap<Integer, Integer>(); for (Integer key :map.keySet()) { Integer value = Map.get(key); + مفتاح + "، القيمة =" + القيمة)؛
كبديل للطريقة الأولى، تبدو هذه التعليمات البرمجية أكثر وضوحًا، ولكنها في الواقع بطيئة جدًا وغير فعالة. نظرًا لأن الحصول على القيمة من المفتاح عملية تستغرق وقتًا طويلاً (مقارنة بالطريقة الأولى، تكون هذه الطريقة أبطأ بنسبة 20% إلى 200% في تطبيقات الخرائط المختلفة). إذا قمت بتثبيت FindBugs، فسوف يتحقق ويحذرك بشأن عمليات الاجتياز غير الفعالة. لذا حاول تجنب استخدامه.
تلخيص
إذا كنت بحاجة إلى مفاتيح أو قيم فقط، فاستخدم الطريقة الثانية. إذا كان إصدار اللغة الذي تستخدمه أقل من Java 5، أو كنت تخطط لحذف الإدخالات أثناء الاجتياز، فيجب عليك استخدام الطريقة الثالثة. بخلاف ذلك، استخدم الطريقة الأولى (كل من المفتاح والقيمة).