Для производительности вам очень часто приходится идти на некоторые компромиссы. Другие выразили различные методы, однако вы заметили, что хак Кармака был быстрее до определенных значений N. Затем вы должны проверить «n», и если оно меньше, чем число N, используйте хак Кармака, иначе используйте какой-то другой описанный метод в ответах здесь.
Согласно Javadocs , да.
Эта реализация отличается от
HashMap
тем, что поддерживает двусвязный список, проходящий через все его записи. Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту ( порядок вставки ).
Что касается редактирования, нет, оно должно работать нормально. Но набор записей выполняется несколько быстрее, поскольку позволяет избежать накладных расходов на поиск каждого ключа на карте во время итерации.
Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту (порядок вставки). Обратите внимание, что порядок вставки не изменяется, если ключ повторно вставляется в карту. (Ключ k повторно вставляется в карту m, если m.put (k, v) вызывается, когда m.containsKey (k) вернет true непосредственно перед вызовом.)
Если вы уверены, что никакие изменения не будут внесены во время итерации, тогда правильный порядок с entrySet ()
гарантируется, как указано в API .