От Oracle's Map Interface tutorial:
Карта - это объект, который сопоставляет ключи значениям. Карта не может содержать повторяющиеся ключи: каждый ключ может отображать не более одного значения. Он моделирует абстракцию математической функции.
Так содержимое карты в вашем коде может быть:
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 сохраняет порядок вставки, например, List.
Объявление карты в вашем примере кода довольно распространено и демонстрирует практику объявления переменных Collections в качестве типа интерфейса и значения как реализации этого интерфейса. Как указывали другие, интерфейс (например, Map
) определяет методы, доступные для пользователей, тогда как реализация (например, HashMap
) реализует логику для поддержки интерфейса.
Это считается хорошей практикой, поскольку позволяет изменять базовую реализацию (в данном случае) Карты без изменения кода, который ее использует.
Вы нашли JavaDoc для Map и HashMap? И учебник по сборникам Java? http://docs.oracle.com/javase/tutorial/collections/ –
Да, но все же я чувствовал, что это не так (для меня) достаточно четко ответить на вышеуказанные вопросы. – mino
Вы должны указать * what *, тогда не ясно, иначе вы снова получите такую же информацию. Например, карты и списки очень разные, и в учебнике объясняются их по-разному. –