Порядок итераций Collection.unmodifiableMap - PullRequest
4 голосов
/ 04 марта 2011

Защищает ли Colelction.unmodifiableMap порядок итераций?

Я пытался newMap.put (ключ, Collections.ModifiableMap (oldMap)) Затем, когда я делаю newMap.get (ключ) и выполняю итерацию, порядок итераций, похоже, меняется.

Как мы можем защитить повторный заказ?

Ответы [ 3 ]

5 голосов
/ 04 марта 2011

UnmodifiableMap просто делегирует все методы, кроме написания.Это тот же порядок, что и у делегата.

Если вам нужно иметь тот же порядок, что и у первой коллекции, используйте LinkedHashMap.

4 голосов
/ 04 марта 2011

Оформить Collections.unmodifiableSortedMap .Это должно предоставить вам только для чтения представление на вашей карте и поддерживать отсортированный порядок ключей.

1 голос
/ 04 марта 2011

Если мы посмотрим на источник для Collections.unmodifiableMap , мы увидим, что он просто передает его в класс UnmodifiableMap, который просто упаковывает его.Таким образом, он не вносит изменений в порядок базовой карты.

И в соответствии с документацией для unmodifiableMap он говорит это:

Возвращает неизменяемое представлениеуказанная карта.

Поскольку он говорит, что возвращает представление , это означает, что мы не получаем другую карту, просто другой способ доступа к старой карте.

...