java - يتكرر من خلال HashMap




loops iteration (5)

أكثر ذكاء:

for (String key : hashMap.keySet()) {
    System.out.println("Key: " + key + ", Value: " + map.get(key));
}

ممكن تكرار:
كيف يتم التكرار بكفاءة أعلى لكل إدخال في "خريطة"؟

ما هي أفضل طريقة للتكرار أكثر من العناصر الموجودة في HashMap ؟


إذا كنت مهتمًا بالمفاتيح فقط ، فيمكنك التكرار من خلال keySet() للخريطة:

Map<String, Object> map = ...;

for (String key : map.keySet()) {
    // ...
}

إذا كنت تحتاج فقط إلى القيم ، فاستخدم values() :

for (Object value : map.values()) {
    // ...
}

وأخيرًا ، إذا كنت تريد المفتاح والقيمة ، فاستخدم entrySet() :

for (Map.Entry<String, Object> entry : map.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // ...
}

تحذير واحد: إذا كنت ترغب في إزالة العناصر منتصف التكرار ، فسوف تحتاج إلى القيام بذلك عن طريق Iterator (انظر الإجابة karim79 ). ومع ذلك ، تغيير قيم العنصر على ما يرام (انظر Map.Entry ).


يتكرر من خلال entrySet() مثل:

public static void printMap(Map mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        it.remove(); // avoids a ConcurrentModificationException
    }
}

قراءة المزيد عن Map .


يعتمد على. إذا كنت تعرف أنك ستحتاج إلى كل مفتاح وقيمة كل إدخال ، ثم انتقل من خلال entrySet . إذا كنت تحتاج فقط إلى القيم ، فهناك طريقة values() . وإذا كنت بحاجة فقط إلى المفاتيح ، استخدم keyset() .

قد يكون من الممارسات السيئة تكرار كل المفاتيح ، ثم داخل الحلقة دائمًا map.get(key) للحصول على القيمة. إذا كنت تفعل ذلك ، فإن الخيار الأول الذي كتبته هو لك.


for (Map.Entry<String, String> item : params.entrySet()) {
    String key = item.getKey();
    String value = item.getValue();
}




iteration