Перейти к основному содержимому

Как сохранить HashMap<String, ArrayList> внутри списка

· 2 мин. чтения

1. Обзор

В этом уроке мы собираемся обсудить, как хранить HashMap внутри списка в Java. Во-первых, у нас будет краткое объяснение структур данных HashMap и List в Java. Затем мы напишем простой код для решения проблемы.

2. HashMap и список в Java

Java предоставляет нам различные структуры данных с различными свойствами и характеристиками для хранения объектов. Среди них HashMap — это набор пар ключ-значение, который сопоставляет уникальный ключ со значением. Кроме того, список содержит последовательность объектов одного типа.

В эти структуры данных мы можем поместить как простые значения, так и сложные объекты.

3. Храните HashMap<String, ArrayList<String>> внутри списка

Давайте рассмотрим простой пример, в котором мы создаем список HashMaps . Для каждой категории книг существует HashMap , который сопоставляет название книги с ее авторами.

Во- первых, мы определяем javaBookAuthorsMap , который сопоставляет название книги, связанной с Java, со списком ее авторов:

HashMap<String, List<String>> javaBooksAuthorsMap = new HashMap<>();

Кроме того, мы определяем phpBooksAuthorsMap для хранения имени и авторов книги для категории PHP:

HashMap<String, List<String>> phpBooksAuthorsMap = new HashMap<>();

Затем мы определяем booksAuthorsMapsList для хранения HashMap для разных категорий:

List<HashMap<String, List<String>>> booksAuthorsMapsList = new ArrayList<>();

Теперь у нас есть список , содержащий два HashMaps .

Чтобы проверить это, мы можем поместить информацию о некоторых книгах в списки javaBookAuthorsMap и phpBooksAuthorsMap . Затем мы добавляем их в список booksAuthorsMapsList. Наконец, мы убеждаемся, что HashMaps добавлены в список.

Давайте посмотрим на модульный тест ниже:

@Test
public void givenMaps_whenAddToList_thenListContainsMaps() {
HashMap<String, List<String>> javaBooksAuthorsMap = new HashMap<>();
HashMap<String, List<String>> phpBooksAuthorsMap = new HashMap<>();
javaBooksAuthorsMap.put("Head First Java", Arrays.asList("Kathy Sierra", "Bert Bates"));
javaBooksAuthorsMap.put("Effective Java", Arrays.asList("Joshua Bloch"));
javaBooksAuthorsMap.put("OCA Java SE 8",
Arrays.asList("Kathy Sierra", "Bert Bates", "Elisabeth Robson"));
phpBooksAuthorsMap.put("The Joy of PHP", Arrays.asList("Alan Forbes"));
phpBooksAuthorsMap.put("Head First PHP & MySQL",
Arrays.asList("Lynn Beighley", "Michael Morrison"));

booksAuthorsMapsList.add(javaBooksAuthorsMap);
booksAuthorsMapsList.add(phpBooksAuthorsMap);

assertTrue(booksAuthorsMapsList.get(0).keySet()
.containsAll(javaBooksAuthorsMap.keySet().stream().collect(Collectors.toList())));
assertTrue(booksAuthorsMapsList.get(1).keySet()
.containsAll(phpBooksAuthorsMap.keySet().stream().collect(Collectors.toList())));
}

4. Вывод

В этой статье мы говорили о хранении HashMaps внутри списка в Java. Затем мы написали простой пример, в котором мы добавили HashMap<String, ArrayList<String>> в список<String> для двух категорий книг.

Примеры доступны на GitHub .