Looking for java Keywords? Try Ask4Keywords

Java Language Pitfall - Итерация ключей карты может быть неэффективной


пример

Следующий примерный код медленнее, чем нужно:

Map<String, String> map = new HashMap<>(); 
for (String key : map.keySet()) {
    String value = map.get(key);
    // Do something with key and value
}

Это связано с тем, что для каждого ключа на карте требуется поиск по карте (метод get() ). Этот поиск может быть неэффективным (в HashMap он влечет за собой вызов hashCode на ключ, а затем поиск правильного ведра во внутренних структурах данных, а иногда даже вызов equals ). На большой карте это не может быть тривиальным накладным.

Правильный способ избежать этого - перебирать записи карты, которые подробно описаны в разделе « Коллекции»