
- •Классы-коллекции
- •Интерфейсы-коллекции
- •Интерфейс Collection
- •Интерфейс List
- •Интерфейс Set
- •Интерфейс Queue
- •Класс ArrayList
- •Паттерн проектирования Iterator
- •Класс LinkedList
- •Классы-множества
- •Интерфейс SortedSet и интерфейс Comparator
- •Понятие ассоциативного массива
- •Интерфейс Map
- •Класс Hashmap
- •Класс LinkedHashMap
- •Класс TreeMap
- •Класс WeakHashMap
- •Интерфейс SortedMap
- •Пример работы с ассоциативными массивами
- •Классы-оболочки
- •Работа с датой и временем
- •Генерация случайных чисел
- •Ход работы:
- •Задание 1
- •Задание 2
- •Задание №3
- •Контрольные вопросы:
Понятие ассоциативного массива
Ассоциативный массив – это набор пар элементов. Каждая пара содержит ключ и значение, причем ключи не повторяются. В любой момент можно получить элемент-значение, ассоциированный (находящийся в паре) с заданным ключом. Ассоциативный массив также называют словарем или отображением.
В виде ассоциативного массива удобно хранить, например, строку, полученную из базы данных. Ключом будет название столбца, а значением – значение этого столбца для полученной строки.
Можно воспринимать ассоциативный массив как разновидность обычного массива, в котором индексы могут быть не только целыми числами, а произвольными объектами.
Интерфейс 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 блестящим выбором для хранения больших объемов отсортированной информации, которая должна быть быстро найдена.