1. Обзор
В этой статье мы рассмотрим различные возможные способы инициализации пустой карты
в Java.
Мы будем использовать Java 8, а также Java 9 для проверки различных способов.
2. Использование коллекций Java
Мы можем создать пустую карту
, используя метод emptyMap()
, предоставляемый модулем Java Collections. Это сформирует пустую карту
, сериализуемую по своей природе. Этот метод был представлен в Java 1.5 в библиотеке коллекций. Это создаст неизменяемую карту
:
Map<String, String> emptyMap = Collections.emptyMap();
Примечание. Поскольку созданная карта
является неизменной по своей природе, она не позволит пользователю добавлять какие-либо записи или выполнять какие-либо изменения на карте
. Это вызовет исключение java.lang.UnsupportedOperationException
при попытке добавить или изменить любую пару ключ-значение в Map
.
У нас есть еще два метода, которые поддерживают создание и инициализацию пустой карты
. emptySortedMap ()
возвращает пустую SortedMap
неизменяемого типа. Отсортированная
карта — это та
, которая обеспечивает дальнейшее полное упорядочение своих ключей. Карта ,
созданная этим методом, по своей природе сериализуема:
SortedMap<String, String> sortedMap = Collections.emptySortedMap();
Другой метод, предоставляемый коллекциями Java, — emptyNavigableMap()
, который возвращает пустой NavigableMap
. Он имеет те же свойства, что и пустая отсортированная карта
. Единственная разница в том, что этот метод возвращает Map
с возможностью навигации . Навигационная карта
— это расширение традиционной реализации отсортированной карты
,
которая возвращает наиболее близкие совпадения для заданной цели поиска. ``
NavigableMap<String, String> navigableMap = Collections.emptyNavigableMap();
Все вышеперечисленные методы возвращают Карты
, которые по своей природе неизменяемы, и мы не сможем добавлять новые записи в эти Карты
. Это вызывает исключение UnsupportedOperationException
при принудительной попытке добавить, удалить или изменить любые пары ключ-значение.
3. Использование класса карт Java
В некоторых случаях нам не нужна неизменяемая карта
. Мы можем инициализировать изменяемую карту
с помощью класса Maps :
Map<String, String> emptyMap = Maps.newHashMap();
Этот тип инициализации создает изменяемую Карту
, т.е. мы можем добавлять записи в эту Карту
. Но базовая инициализация этой Карты
пуста и не содержит никаких записей.
Мы также можем инициализировать карту
с определенными типами ключей и значений. Это создаст карту
с предопределенным типом элементов и вызовет исключение, если оно не будет выполнено:
Map genericEmptyMap = Maps.<String, Integer>newHashMap();
Короче говоря, это создает пустую карту
с ключом в виде строки и значением в виде целого числа. Пара угловых скобок, используемых для инициализации, известна как Diamond Syntax
. Это создаст карту
с аргументами определенного типа, которая вызывает конструктор класса Maps
.
4. Инициализация карты с помощью конструкторов
Мы можем инициализировать Карты
, используя конструкторы различных реализаций Карт
, например HashMap, LinkedHashMap, TreeMap
. Все эти инициализации создают пустую карту
, в которую мы можем добавить записи позже, если это необходимо:
Map hashMap = new HashMap();
Map linkedHashMap = new LinkedHashMap();
Map treeMap = new TreeMap();
Вышеупомянутые Карты
изменяемы и могут принимать новые записи, что является одним из преимуществ использования этого подхода. Карты ,
созданные во время этого типа инициализации, пусты. Мы можем определить пустые Карты
в статическом
блоке кода.
5. Способ Java 9 с Map.of()
Java 9 поставляется со многими новыми функциями, такими как частные методы интерфейса, анонимные классы, система модулей платформы
и многие другие. Map.of ()
— это фабричный метод, представленный в версии Java 9. Этот метод возвращает неизменяемую карту
, которая создает нулевые сопоставления. Интерфейс, предоставляемый этим методом, относится к Java Collections Framework . Map.of (key1, value1, key2, value2, …..)
может иметь не более 10 пар ключ-значение.
Для инициализации пустой Map
мы не будем передавать никакую пару ключ-значение в этом методе:
Map<String, String> emptyMapUsingJava9 = Map.of();
Этот фабричный метод создает неизменяемую карту
, поэтому мы не сможем добавлять, удалять или изменять любую пару ключ-значение. Исключение UnsupportedOperationException
возникает при попытке внести какие-либо изменения в карту
после инициализации. . добавление или удаление пар ключ-значение также не поддерживается и приведет к возникновению вышеуказанного исключения.
Примечание. Метод Map.of()
из Java 9 упрощает инициализацию неизменяемых карт
с нужными парами ключ-значение.
6. Использование гуавы
До сих пор мы рассматривали различные способы инициализации пустой Карты
с помощью ядра Java. Давайте продолжим и проверим, как инициализировать карту
с помощью библиотеки Guava:
Map<String, String> articles = ImmutableMap.of();
Вышеупомянутый метод создаст неизменяемую пустую карту
с использованием библиотеки Guava. Мы также можем создать изменяемую карту
в гуаве, используя следующий синтаксис:
Map<String, String> emptyMapUsingGuava = Maps.newHashMap(ImmutableMap.of());
В заключение, приведенный выше метод создает пустую карту
в Java. Мы можем добавлять записи на эту карту
, поскольку она по своей природе изменчива.
ImmutableMap.of ()
также перегружает версии методов для создания карт
с записями. Поскольку мы создаем пустую карту
, нам не нужно передавать какие-либо параметры в скобках метода, чтобы использовать перегруженные методы.
7. Заключение
В этой статье мы рассмотрели различные способы инициализации пустой
карты
. Мы видим, что по сравнению с Java 9 в этой области произошли огромные улучшения. У нас есть новые фабричные методы для создания и инициализации Карт
.
Как всегда, полный исходный код доступен на Github .