Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3 2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
911.87 Кб
Скачать

Понятие ассоциативного массива

Ассоциативный массив – это набор пар элементов. Каждая пара содержит ключ и значение, причем ключи не повторяются. В любой момент можно получить элемент-значение, ассоциированный (находящийся в паре) с заданным ключом. Ассоциативный массив также называют словарем или отображением.

В виде ассоциативного массива удобно хранить, например, строку, полученную из базы данных. Ключом будет название столбца, а значением – значение этого столбца для полученной строки.

Можно воспринимать ассоциативный массив как разновидность обычного массива, в котором индексы могут быть не только целыми числами, а произвольными объектами.

Интерфейс Map

Интерфейс Map содержит методы для работы с ассоциативным массивом (рисунок 5):

size() – возвращает количество элементов (пар) в массиве;

containsKey(Object key) – проверяет, существует ли в массиве элемент с ключом key;

containsValue(Object value) – проверяет, существует ли в массиве элемент со значением value;

get(Object key) – возвращает значение, соответствующее ключу key;

put(Object key, Object value) – добавляет в массив элемент с ключом key и значением value. Если элемент с таким ключом уже существует в массиве, то его значение просто изменяется;

values() – возвращает значения всех элементов массива в виде коллекции (т. е. возвращаемый результат имеет тип Collection);

remove(Object key) – удаляет элемент с ключом key, возвращая значение этого элемента (если он есть) и null, если такого элемента не было;

clear() – очищает массив;

isEmpty() – проверяет, не пуст ли массив.

Каждый элемент ассоциативного массива, описываемого интерфейсом Map, имеет интерфейсный тип Map.Entry, который предоставляет три основных метода:

getKey() – возвращает ключ элемента;

getValue() – возвращает значение элемента;

setValue(Object value) – меняет значение элемента.

Метод entrySet(), определенный в интерфейсе Map, позволят получить все элементы ассоциативного массива в виде множества объектов типа Map.Entry.

Рисунок 5

Класс Hashmap

HashMap – основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени.

Класс LinkedHashMap

LinkedHashMap – расширяет класс HashMap. Он создает связный список элементов в карте, расположенных в том порядке, в котором они вставлялись. Это позволяет организовать перебор карты в порядке вставки. То есть, когда происходит итерация по коллекционному представлению объекта класса LinkedHashMap, элементы будут возвращаться в том порядке, в котором они вставлялись. Вы также можете создать объект класса LinkedHashMap, возвращающий свои элементы в том порядке, в котором к ним в последний раз осуществлялся доступ.

Класс TreeMap

TreeMap – расширяет класс AbstractMap и реализует интерфейс NavigatebleMap. Он создает коллекцию, которая для хранения элементов применяет дерево. Объекты сохраняются в отсортированном порядке по возрастанию. Время доступа и извлечения элементов достаточно мало, что делает класс TreeMap блестящим выбором для хранения больших объемов отсортированной информации, которая должна быть быстро найдена.