Специальные методы интерфейса List
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Адресное добавление
void add ( int index , Object o ) – вставляет элемент o на index-ю позицию в списке, сдвигая каждый последующий элемент на одну позицию в направлении конца списка.

Адресные операции с элементами
Object get ( int index ) – возвращает элемент, занимающий index-ю позицию в списке
Object set ( int index , Object o ) –
возвращает содержимое элемента, расположенного на index-й позиции в списке, и замещает его в списке значением o.
Object remove ( int index ) –
возвращает содержимое элемента, занимающего index-ю позицию в списке, и удаляет этот элемент из списка, сдвигая каждый последующий элемент на одну позицию в направлении начала списка.

Операции поиска
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 ) – возвращает частичный список или курсор (view) текущего списка; в курсор включаются элементы списка, занимающие позиции от from до to, кроме элемента с индексом to. Содержимое курсора поддерживается коллекцией в актуальном состоянии: изменения, вносимые в курсор, отображаются в текущем списке. Изменения, которые претерпевает текущий список, однако, не обязательно «видимы» посредством курсора и могут приводить к неопределенным результатам.
ListIterator listIterator () – возвращает объект ListIterator, который позволяет осуществлять пошаговое перемещение по списку, начиная с элемента с индексом 0.









Интерфейс Iterator

Позволяет работать с коллекцией как с набором (серией) элементов:

• Получать следующий объект Object next ().

• Проверять наличие следующего объекта boolean hasNext ().

• Исключать объект из коллекции void remove ().

Интерфейс Map

• Не расширяет интерфейс Collection.

• Подразумевает хранение набора объектов парами ключ/значение.

• Ключи должны быть уникальными.

• Порядок следования пар ключ/значение не определен.

• Имеет расширение SortedMap, требующее упорядоченности по значениям ключей.

Методы интерфейса Map

Добавление объектов
Object put ( Object key , Object value ) – устанавливает соответствие между объектом-ключом key и объектом–значением value в текущей коллекции. Если коллекция уже содержит значение, соответствующее key, значение возвращается и заменяется в коллекции содержимым параметра value. Если в коллекции нет пары key/value, та помещается в коллекцию и возвращается null; метод может вернуть null и в том случае, если ключ key прежде существовал и ссылался на значение null.
void putAll ( Map t ) – помещает в коллекцию содержимое другой коллекции t.

Исключение объектов
Object remove ( Object key ) – удаляет из коллекции соответствие для заданного ключа key. Возвращаемое значение обладает той же семантикой, что и в случае метода put.
void clear () – очищает коллекцию, удаляя из нее все пары соответствий.

Доступ к объекту по ключу
Object get ( Object key ) – возвращает объект-значение, которому соответствует заданный ключ key, либо null, если соответствие не найдено; null также может быть возвращено в случае, если коллекция допускает хранение значений null и ключ key явно указывает на null.

Состояние
boolean containsValue ( Object value ) – возвращает true, если коллекция содержит по меньшей мере один экземпляр заданного значения value.
boolean containsKey ( Object key ) – возвращает true, если коллекция содержит значение для заданного ключа key.
int size () – возвращает размер коллекции соответствий, т.е. количество хранящихся в ней пар ключ/значение. Возвращаемое значение ограничено сверху величиной Integer.MAX_VALUE – даже в том случае, если в коллекции хранится большее число элементов-пар.
boolean isEmpty () – возвращает true, если коллекция пуста.

Преобразование типа
Set entrySet () – возвращает объект Set, элементами которого служат объекты типа Map.Entry, представляющие отдельные пары соответствий текущей коллекции. Map.Entry – это вложенный интерфейс, обдадающий методами, которые позволяют манипулировать парами соотвествий.
Set keySet () – возвращает объект Set, элементами которого служат ключи текущей коллекции соответствий.
Collection values () – возвращает объект Collection, элементами которого служат значения текущей коллекции соответствий.













Классы коллекций

Динамические массивы
ArrayList ( List ) – позволяет хранить элементы списка в виде массива изменяемого размера.
Vector ( List ) – относится к числу устаревших, является прямым аналогом ArrayList.

Двухсвязный список
LinkedList ( List ) – обеспечивает реализацию двусвязного списка.

Упорядоченные множество и карта
TreeSet ( Set ) – обеспечивает хранение элементов в структуре данных сбалансированного бинарного дерева.
TreeMap ( Map ) – реализует интерфейс Map и обеспечивает хранение ключей в упорядоченном виде теми же способами, которые предусмотрены классом TreeSet.

Ряд других классов
HashMap ( Map ) – реализует интерфейс Map на основе модели хеш-таблицы.
HashSet ( Set ) – представляет собой реализацию интерфейса Set, основанную на использовании хеш-таблицы.








Класс Collections

В его составе определен целый ряд статических методов прикладного назначения, позволяющих оперировать объектами коллекций. Инструменты класса можно условно поделить на две обширные группы: методы, обеспечивающие создание и поддержку объектов оберток (оболочек) коллекций и прочие методы. Обертка дает возможность дополнить свойства «внутреннего» объекта-коллекции – синхронизировать доступ к нему или запретить использование тех методов объекта, которые изменяют содержимое коллекции.

Виды оберток:

Синхронизированные обертки

Все реализации коллекций, объявленные в пакете java.util, сами по себе не поддерживают средств синхронизации. Ответственность за обеспечение синхронизации доступа к содержимому коллекции со стороны нескольких потоков вычислений обычно возлагается на прикладной код. Автор кода может добиться такой цели, явно обозначая методы или выражения признаком synchronized либо проектируя код в расчете на возможность обращения к коллекции только из одного потока вычислений. Подобные приемы как раз и отвечают ситуациям, в которых коллекции применяются наиболее часто – объекты коллекций создаются, как правило, в виде локальных переменных в теле методов либо объявляются в форме private-полей классов с синхронизированным кодом.

Помимо названных подходов существует возможность использования коллекций в контексте синхронизированных оберток. Объект синхронизированной обертки активизирует методы «внутренней» коллекции только после выполнения необходимых действий по синхронизации доступа к ее содержимому. Чтобы получить объект синхронизированной обертки, следует передать ссылку на объект коллекции одному из статических методов класса Collections: synchronizedCollection, synchronizedSet, synchronizedSortedSet, synchronizedList, synchronizedMap или synchronizedSortedMap. Каждый из перечисленных методов возвращает объект обертки коллекции соответствующего типа, методы которого полностью синхронизированы, что гарантирует безопасность их использования в многопоточной среде.

List synchronizedList(List l)

Неизменяемые обертки

В составе класса Collections имеются статические методы, возвращающие для заданных объектов коллекций неизменяемые обертки: unmodifiableCollection, unmodifiableSet, unmodifiableSortedSet, unmodifiableList, unmodifiableMap, unmodifiableSortedMap. Объекты-обертки названных типов свободно «пропускают» обращенные к «внутренней» коллекции вызовы методов, которые не изменяют ее содержимого, но активизация любого из методов, предполагающих воздействие на содержимое, приводит к выбрасыванию исключения UnsupportedOperationException. Как и в случае синхронизированных оберток, содержимое неизменяемой обертки поддерживается исходной коллекцией в актуальном состоянии: результат любого изменения данных коллекции оказывается «видимым» со стороны объекта-обертки. Т.е. содержимое неизменяемой обертки коллекции на самом деле изменению поддается, но только не средствами самой обертки.

Map unmodifiableMap(Map m)

Дата: 2019-02-19, просмотров: 220.