Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
14 Фев 2023
2 мин
583

Использование Map в Java с сохранением порядка вставки

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

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

Однако, при использовании класса Hashtable, HashMap или других классов, реализующих интерфейс Map, порядок вставки элементов не сохраняется. Это связано с тем, что основная идея этих структур данных — обеспечение быстрого доступа к элементам по ключу, а не сохранение порядка их вставки.

Следовательно, при попытке проитерироваться по такой структуре данных и вывести ее элементы, порядок их вывода может существенно отличаться от порядка их добавления.

Map<String, String> map = new HashMap<>();
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");

for(Map.Entry<String, String> entry: map.entrySet()) {
    System.out.println(entry.getKey() + "/" + entry.getValue());
}

Вывод данного кода может быть в любом порядке, например: «two/2», «one/1», «three/3».

Для решения этой задачи в Java предусмотрен специальный класс LinkedHashMap, который реализует интерфейс Map и при этом сохраняет порядок вставки элементов.

Map<String, String> map = new LinkedHashMap<>();
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");

for(Map.Entry<String, String> entry: map.entrySet()) {
    System.out.println(entry.getKey() + "/" + entry.getValue());
}

Вывод этого кода будет следующим: «one/1», «two/2», «three/3», что соответствует порядку добавления элементов в Map.

Таким образом, если в Java необходимо использовать структуру данных Map, которая бы сохраняла порядок вставки элементов, то стоит использовать класс LinkedHashMap.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий