Все ответы, предполагающих, что вы можете создать LinkedHashMap
из HashMap
являются технически правильными, но не будет дают вам желаемые результаты :-(
Конечно, вы можете создать LinkedHashMap
от HashMap
, но это не gua сообщите, что LinkedHashMap
будет иметь тот же порядок, что и ваш оригинал.
Проблема заключается в том, что ваш LinkedHashMap
сериализуется, когда он хранится в постоянном хранилище как обычный неупорядоченный Map
, который НЕ сохраняет порядок отдельных элементов. Когда вы извлекаете объект из постоянного хранилища, он возвращается как обычный HashMap
, и он потерял «порядок» (именно это и требовало, чтобы вы в первую очередь использовали LinkedHashMap
). Если вы затем создадите LinkedHashMap
из возвращенного HashMap
, заказ будет, скорее всего, отличаться от оригинала.
Для этого необходимо преобразовать LinkedHashMap
в упорядоченный массив объектов и сохранить этот упорядоченный массив в постоянном хранилище. Затем вы можете прочитать упорядоченный массив объектов обратно из постоянного хранилища и воссоздать LinkedHashMap
с правильным порядком. В принципе, вам необходимо сериализовать и десериализовать LinkedHashMap
.
Для получения более подробной информации см. my answer to this question.
Спасибо за вызов. Мне нравится нетривиальный вопрос, требующий немного копания. –
@DavidWasser, Спасибо за подробный ответ, почему-то не все люди думали, что это достойный вопрос. –
Я понятия не имею, откуда взялись вниз. Это меня действительно удивило. –