Подтвердить что ты не робот

Поддерживает ли entrySet() в LinkedHashMap гарантийный заказ?

Я использую связанныйHashMap, чтобы гарантировать порядок, когда кто-то пытается получить к нему доступ. Однако, когда приходит время перебирать его, используется ли функция entrySet() для возврата гарантийного поручения с ключом/значением? Во время итерации изменений не будет.

РЕДАКТИРОВАТЬ: Также есть ли какие-либо побочные эффекты от итерации через карту, итерации через ее ключи и вызов get?

4b9b3361

Ответ 1

В соответствии с Javadocs, да.

Эта реализация отличается от HashMap тем, что она поддерживает двусвязный список, проходящий через все его записи. Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту (порядок вставки).

Что касается редактирования, нет, он должен работать нормально. Но набор записей несколько быстрее, поскольку он позволяет избежать накладных расходов на поиск каждого ключа на карте во время итерации.

Ответ 2

Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту (порядок вставки). Обратите внимание, что порядок вставки не изменяется, если ключ повторно вставлен в карту. (Ключ k повторно вставлен в карту m, если m.put(k, v) вызывается, когда m.containsKey(k) возвращает true непосредственно перед вызовом.)

Ответ 3

Если вы уверены, что во время итерации изменений не будет сделано, то гарантируется правильное упорядочение с помощью entrySet(), как указано в API.