entrySet () в LinkedHashMap также гарантируют порядок?

Для производительности вам очень часто приходится идти на некоторые компромиссы. Другие выразили различные методы, однако вы заметили, что хак Кармака был быстрее до определенных значений N. Затем вы должны проверить «n», и если оно меньше, чем число N, используйте хак Кармака, иначе используйте какой-то другой описанный метод в ответах здесь.

67
задан Diego 27 July 2009 в 19:26
поделиться

3 ответа

Согласно Javadocs , да.

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

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

51
ответ дан 24 November 2019 в 14:44
поделиться

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

1
ответ дан 24 November 2019 в 14:44
поделиться

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

1
ответ дан 24 November 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: