- •Коллекции
- •Цели занятия
- •Коллекции
- •Интерфейс Collection
- •Методы интерфейса Collection
- •Методы интерфейса Collection
- •Методы интерфейса Collection
- •Интерфейс Set
- •Интерфейс List
- •Специальные методы интерфейса List
- •Специальные методы интерфейса List
- •Интерфейс Iterator
- •Интерфейс Map
- •Методы интерфейса Map
- •Методы интерфейса Map
- •Методы интерфейса Map
- •Классы коллекций
- •Класс Collections
- •Синхронизированные обертки
- •Неизменяемые обертки
- •Прикладные методы класса
- •Прикладные методы класса
- •Литература
Специальные методы интерфейса List
11 • Операции поиска
int indexOf(Object o) – возвращает индекс первого объекта в списке, равного(equals) параметру o, либо null, если o равен null. Возвращает -1, если совпадения не обнаружены
int lastIndexOf(Object o) - возвращает индекс последнего объекта в списке, равного(equals) параметру o, либо null, если o равен null. Возвращает -1, если совпадения не обнаружены
•Специальные операции
List subList(int from, int to) – возвращает частичный список или курсор текущего списка; в курсор включаются элементы списка, занимающие позиции от from до to, кроме элемента с индексом to. Содержимое курсора поддерживается коллекцией в актуальном состоянии: изменения, вносимые в курсор, отображаются в текущем списке. Изменения, которые претерпевает текущий список, однако, не обязательно «видимы» посредством курсора и могут приводить к неопределенным результатам
ListIterator listIterator() – возвращает объект ListIterator, который позволяет осуществлять пошаговое перемещение по списку, начиная с элемента с индексом 0
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Интерфейс Iterator
12• Позволяет работать с коллекцией как с набором элементов
•Получать следующий объект Object next()
•Проверять наличие следующего объекта boolean hasNext()
•Исключать объект из коллекции void remove()
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Интерфейс Map
13• Не расширяет интерфейс Collection
•Подразумевает хранение набора объектов парами ключ/значение
•Ключи должны быть уникальными
•Порядок следования пар ключ/значение не определен
•Имеет расширение SortedMap, требующее упорядоченности по значениям ключей
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Методы интерфейса Map
14 • Добавление объектов
Object put(Object key, Object value) – устанавливает
соответствие между объектом-ключом key и объектом- значением value в текущей коллекции. Если коллекция уже
содержит значение, соответствующее key, значение
возвращается и заменяется в коллекции содержимым параметра value. Если в коллекции нет пары key/value, та
помещается в коллекцию и возвращается null; метод может вернуть null и в том случае, если ключ key прежде существовал и ссылался на значение null
void putAll(Map t) – помещает в коллекцию содержимое
другой коллекции t
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Методы интерфейса Map
15 • Исключение объектов
Object remove(Object key) – удаляет из коллекции соответствие для заданного ключа key. Возвращаемое значение обладает той же семантикой, что и в случае метода put()
void clear() – очищает коллекцию, удаляя из нее все пары соответствий
•Состояние
boolean containsValue(Object value) – возвращает true, если коллекция содержит по меньшей мере один экземпляр заданного значения value
boolean containsKey(Object key) – возвращает true, если коллекция содержит значение для заданного ключа key
int size() – возвращает размер коллекции соответствий, т.е. количество хранящихся в ней пар ключ/значение. Возвращаемое значение ограничено сверху величиной Integer.MAX_VALUE – даже в том случае, если в коллекции хранится большее число элементов-пар
boolean isEmpty() – возвращает true, если коллекция пуста
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Методы интерфейса Map
16 • Доступ к объекту по ключу
Object get(Object key) – возвращает объект-значение, которому соответствует заданный ключ key, либо null, если соответствие не найдено; null также может быть возвращено в случае, если коллекция допускает хранение значений null и ключ key явно указывает на null
•Преобразование типа
Set entrySet() – возвращает объект Set, элементами которого служат объекты типа Map.Entry, представляющие отдельные пары соответствий текущей коллекции. Map.Entry
– это вложенный интерфейс, обдадающий методами, которые позволяют манипулировать парами соотвествий
Set keySet() – возвращает объект Set, элементами которого служат ключи текущей коллекции соответствий
Collection values() – возвращает объект Collection, элементами которого служат значения текущей коллекции соответствий
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Классы коллекций
17 • Динамические массивы
ArrayList (List) – позволяет хранить элементы списка в виде массива изменяемого размера
Vector (List) – относится к числу устаревших, является прямым аналогом ArrayList
•Двухсвязный список
LinkedList (List) – обеспечивает реализацию двусвязного списка
•Упорядоченные множество и карта
TreeSet (Set) – обеспечивает хранение элементов в структуре данных сбалансированного бинарного дерева
TreeMap (Map) – реализует интерфейс Map и обеспечивает хранение ключей в упорядоченном виде теми же способами, которые предусмотрены классом TreeSet
•Ряд других классов
HashMap (Map) – реализует интерфейс Map на основе модели хеш-таблицы
HashSet (Set) – представляет собой реализацию интерфейса Set, основанную на использовании хеш-таблицы
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Класс Collections
18• В его составе определен целый ряд статических методов прикладного назначения, позволяющих оперировать объектами коллекций
•Инструменты класса можно условно поделить на две обширные группы: методы, обеспечивающие создание и поддержку объектов оберток (оболочек) коллекций, и прочие методы
•Обертка дает возможность дополнить свойства «внутреннего» объекта-коллекции – синхронизировать доступ к нему или запретить использование тех методов объекта, которые изменяют содержимое коллекции
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Синхронизированные обертки
19• Объект синхронизированной обертки активизирует методы
«внутренней» коллекции только после выполнения
необходимых действий по синхронизации доступа к ее содержимому
•Чтобы получить объект синхронизированной обертки,
следует передать ссылку на объект коллекции одному из статических методов класса Collections: synchronizedCollection(), synchronizedSet(), synchronizedSortedSet(), synchronizedList(), synchronizedMap() или synchronizedSortedMap()
•Каждый из перечисленных методов возвращает объект
обертки коллекции соответствующего типа, методы
которого полностью синхронизированы, что гарантирует
безопасность их использования в многопоточной среде
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Неизменяемые обертки
20• В составе класса Collections имеются статические методы, возвращающие для заданных объектов коллекций неизменяемые обертки:
unmodifiableCollection(), unmodifiableSet(), unmodifiableSortedSet(), unmodifiableList(), unmodifiableMap(), unmodifiableSortedMap()
•Объекты-обертки названных типов свободно «пропускают» обращенные к «внутренней» коллекции вызовы методов, которые не изменяют ее содержимого, но активизация любого из методов, предполагающих воздействие на содержимое, приводит к выбрасыванию исключения UnsupportedOperationException
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |