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 .