С Учебник Oracle Map Interface :
Карта - это объект, который сопоставляет ключи со значениями.Карта не может содержать дубликаты ключей: каждый ключ может отображать не более одного значения.Он моделирует абстракцию математической функции.
Таким образом, содержимое карты в вашем коде может быть:
DimensionX => x-dimension stuff
DimensionY => y-dimension stuff
DimensionZ => z-dimension stuff
Что касается разницы между картами и массивами:
Карты хранят пары ключ / значение и предоставляют средства доступа, например, к значению, данному ключу.
Map<Dimension, Object> myDimensionMap = new HashMap<Dimension, Object>();
Dimension dimensionXKey = new Dimension("X");
Object dimensionXValue = myDimensionMap[dimensionXKey];
ArrayList (и списки в целом) обеспечивают упорядоченное хранение значений.
List<String> myTokenList = Arrays.asList(new String[]{"first", "second", "third"});
String firstToken = myTokenList.get(0); // "first"
Карты отлично подходят для кеширования, где вам нужно искать что-то на основе ключа;обычно они не упорядочены, но LinkedHashMap сохраняет порядок вставки в виде списка.
Объявление Map в вашем примере кода довольно распространено, и оно демонстрирует практику объявления переменных Collections в качестветип интерфейса и значение как реализация этого интерфейса.Как уже отмечали другие, интерфейс (например, Map
) определяет методы, доступные пользователям, тогда как реализация (например, HashMap
) реализует логику для поддержки интерфейса.
Это считается хорошей практикой, поскольку позволяет изменять базовую реализацию (в данном случае) Map без изменения кода, который ее использует.