Изменить порядок итераций для карты - PullRequest
0 голосов
/ 02 июня 2019

Как я могу перебрать карту в определенном желаемом порядке?В настоящее время у меня есть HashMap и я хочу иметь возможность определять конкретный порядок итераций.Порядок должен быть в состоянии изменить пользователь.

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

Я также нашел SortedMap, но в этом используется компаратор, поэтому мне нужно оценивать его каждый раз, когда я хочу перебрать записи.Это может быть решением, но довольно дорого: O (n * log (n)).

На данный момент комментарий Андреаса, кажется, является лучшим решением, которое имеет как HashMap, так и ArrayList.

Ответы [ 3 ]

1 голос
/ 03 июня 2019

Преобразуйте LinkedHashMap в ArrayList и затем переключите значение.Затем преобразуйте обратно в LinkedHashMap.O (n) для сложности пространства и времени.

0 голосов
/ 03 июня 2019

Если вы хотите, чтобы пара ключ-значение имела свойства ArrayList, вы можете попробовать

List<Pair<String, String>> ?
0 голосов
/ 03 июня 2019

Правильный ответ на этот вопрос: вы используете неверную структуру данных, если вам не нужно переупорядочивать ее.

...