Тема4_2_Коллекции_java_utils.ppt
- Количество слайдов: 29
Коллекции Лекция 4. 2 УНЦ «Инфотех» Воронеж 2012
Коллекции n n n Коллекции (контейнеры) – хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с целью обеспечения возможностей эффективного доступа к ним В Java коллекции разделены на интерфейсы, абстрагирующие общие принципы работы с коллекциями, и классы, реализующие конкретную функциональность Не все методы, заявленные в интерфейсах, должны быть обязательными. Необязательные методы дают возможность изменить содержимое коллекции называют изменяемыми. Неизменяемые коллекции не допускают изменения содержимого. Если сделана попытка использования одного из необязательных методов на неизменяемой коллекции, выбрасывается исключение Unsupported. Operation. Exception 1
Интерфейс Collection n Является образующим для интерфейсов коллекций n Определяет базовую функциональность любой коллекции n Подразумевает добавление, удаление, выбор элементов в коллекции n Допускает дубликаты и пустые элементы 2
Методы интерфейса Collection Метод Описание boolean add(Object obj) Прибавляет obj к вызывающей коллекции. Возвращает true, если obj был добавлен к коллекции, и false, если obj уже является элементом кол лекции или если коллекция не допус кает дубликатов boolean add. All(Collection c) Добавляет все элементы с к вызываю щей коллекции. Возвращает true, если операция закончилась успешно (т. е. все элементы были добавлены). Иначе возвращает false void clear() Удаляет все элементы из вызывающей коллекции 3
Методы интерфейса Collection Метод Описание boolean contains(Object obj) Возвращает true, если вызывающая коллекция содержит элемент obj. Иначе — false boolean contains. All(Collection c) Возвращает true, если вызывающая коллекция содержит все элементы с. Иначе — false. boolean equals(Object obj) Возвращает true, если объект вызывающей коллекции и объект obj равны. Иначе — false 4
Методы интерфейса Collection Метод Описание boolean is. Empty() Возвращает true, если коллекция пустая, иначе false Iterator iterator() возвращает объект, реализующий интерфейс Iterator, т. е. который поочерёдно возвращает все элементы коллекции. boolean remove(Object obj) Удаляет все элементы из вызывающей коллекции 5
Методы интерфейса Collection Метод Описание boolean remove. All(Collection с) Удаляет все элементы с из вызывающей коллекции. Возвращает true, если коллекция изменена (т. е. элементы были удалены). Иначе возвращает false boolean retain. All(Collection c) Удаляет все элементы из вызывающей коллекции, кроме элементов с. Возвращает true, если коллекция изменена (т. е. элементы были удалены). Иначе возвращает false int size() Возвращает число элементов, содержащихся в вызывающей коллекции 6
Методы интерфейса Collection Метод Описание Object [ ] to. Array() Возвращает массив, который содержит все элементы, хранящиеся в вызывающей коллекции. Элементы массива являются копиями элементов коллекции Object[ ] to. Array(Object array[ ]) Возвращает массив, содержащий только те элементы коллекции, чей тип согласуется с типом элементов массива array. Элементы этого массива являются копиями элементов коллекции. int hash. Code() Возвращает хэш код вызывающей коллекции 7
Интерфейс Set Расширяет интерфейс Collection для обработки наборов (sets) n Не разрешает наличие дубликатов n Не определяется никаких дополнительных собственных методов n Допускается наличие только одной ссылки null n Объекты коллекции должны корректно реализовывать метод equals() n 8
Интерфейс List n Расширяет интерфейс Collection n Подразумевает хранение упорядоченной последовательности объектов n Порядок хранения определяется порядком добавления элементов n Позволяет обращаться к элементам по их номеру 9
Интерфейс List Метод Описание void add (int index, Object obj) Вставляет obj в вызывающий список в позицию с индексом index. Любые элементы, существовавшие ранее в точке вставки или за ней, сдвигаются (т. е. никакие элементы не перезаписываются поверх уже существующих) boolean add. All (int index, Collection с) Вставляет все элементы с в вызы вающий список с позиции (индекса) index. Любые элементы, существо вавшие ранее в точке вставки или за ней, сдвигаются (т. е. никакие элементы не перезаписываются поверх уже существующих). Возвра щает rue, если вызывающий список t изменяется, и false — иначе Object get(int index) Возвращает объект, хранящийся в индексной позиции index вызывающей коллекции 10
Интерфейс List Метод Описание int index. Of (Object obj) Возвращает индекс (номер) первого экземпляра объекта obj в вызываю щем списке. Если bj — o не элемент списка, то возвращается 1 int lastlndex. Of (Object obj) Возвращает индекс последнего экземпляра obj в вызывающем списке. Если obj — не элемент списка, то возвращается 1 Возвращает итератор, установленный к началу вызывающего списка Listlterator listlterator() 11
Интерфейс List Метод Описание Listlterator listlterator(int index) Возвращает итератор, установленный к позиции index вызывающего списка Object remove(int index) Удаляет элемент в позиции index из вызывающего списка и возвращает удаленный элемент. Результирующий список уплотняется (т. е. индексы последующих элементов уменьшаются на 1) Object set(int index, Object obj) Устанавливает объект obj в позицию, указанную в index, в вызывающем списке 12
Интерфейс List Метод Описание List sub. List(int start, int end) Возвращает список, который включает элементы от номера, start до end 1 вызывающего списка. После этого вызывающий объект будет ссылаться на элементы воз вращенного (а не исходного) списка 13
Интерфейс Iterator Позволяет работать с коллекцией как с набором (серией) элементов: n Получать следующий объект Object next() n Проверять наличие следующего объекта boolean has. Next() n Исключать объект из коллекции void remove() 14
Интерфейс Iterator Метод Описание void add(Object obj) Вставляет obj в список перед элементом, который будет возвращен следующим вызовом next () boolean has. Next() Возвращает true, если существует следующий элемент. Иначе возвращает false boolean has. Previous() Возвращает true, если существует предыдущий элемент. Иначе возвращает false 15
Интерфейс Iterator Метод Описание Object next() Возвращает следующий элемент. Выбрасывается исключение типа No. Such. Element. Exception, если нет следующегоэлемента int nextindex() Возвращает индекс следующего элемента. Если следующего элемента нет, возвращает размер списка Object previous() Возвращает предыдущий элемент. Выбрасывается исключение типа No. Such. Element. Exception, если предыдущего элемента нет 16
Интерфейс Iterator Метод Описание int previousindex() Возвращает индекс предыдущего элемента. Если предыдущего элемента нет, возвращает 1 void remove() Удаляет текущий элемент из списка. Выбрасывается исключение типа Illegalstate. Exception, если метод remove () вызывается, прежде чем вызван метод next () или previous() void set(Object obj) Назначает obj на текущий элемент. Это последний элемент, возвращенный вызовом метода next () или previous() 17
Интерфейс Iterator. Пример // Демонстрирует итераторы import java. util. *; class Iterator. Demo { public static void main(String args[]) { // создать список массива Array. List al = new Array. List(); // добавить элементы в список массива al. add("C"); al. add("A"); al. add("E"); al. add("B"); al. add("D"); al. add("F") ; // использовать итератор для показа содержимого объекта al System. out. print("Исходное содержимое al: "); Iterator itr = al. iterator(); while(itr. has. Next()) { Object element = itr. next(); System. out. print(element + " "); } System. out. println() ; 18
Интерфейс Iterator. Пример // модифицировать итерируемые объекты Listlterator litr = al. listlterator(); while(litr. has. Next()) { Object element = litr. next(); litr. set(element + " +"); } System. out. print("Модифицированное содержимое al: "); itr = al. iterator () ; while(itr. has. Next()) { Object element = itr. next(); System. out. print(element + " "); } System. out. println() ; // теперь показать список в обратном порядке System. out. print("Модифицированный (обратный) список: "); while(litr. has. Previous()) { Object element = litr. previous () ; System. out. print(element + " "); } System. out. println(); } } 19
Интерфейс Map n Не расширяет интерфейс Collection n Подразумевает хранение набора объектов парами ключ/значение n Ключи должны быть уникальными n Порядок следования пар ключ/значение не определен Имеет интерфейс Sorted. Map, расширяющий Map-интерфейс, гарантирующий, что входы поддерживаются в восходящем порядке ключей n 20
Интерфейс Map Метод Описание void clear() Удаляет все пары вызывающей карты boolean contains. Key(Object k) Возвращает true, если вызывающая карта содержит объект к в качестве ключа. Иначе — false Возвращает true, если карта содержит объект v в качестве значения. Иначе — false Возвращает Set объект, который содержит входы карты. Набор содержит объекты типа Map. Entry. Этот метод обеспечивает представление вызывающей карты в виде набора Возвращает true, если объект obj имеет тип Мар и содержит те же самые входы (что и вызывающая карта). Иначе — false Возвращает значение, связанное с ключом k boolean contains. Value(Object v) Set entry. Set() boolean equals(Object obj) Object get (Object k) ключ/значение из
Интерфейс Map Метод int hash. Code() boolean is. Empty() Set key. Set() Object put (Object k, Object v) void put. All (Map m) Описание Возвращает хэш код вызывающей карты Возвращает true, если вызывающая карта пуста. Иначе — false Возвращает Set обьект, который содержит ключи вызывающей карты. Метод обеспечивает представление ключа вызывающей карты в виде набора Помещает вход в вызывающую карту, переписывая любое предыдущее значение, связанное с ключом. Ключ и значение представлены параметрами к и v, соответственно. Возвращает null, если ключ еще не существует. Иначе — предыдущее значение, связанное с ключом Помещает все входы карты отображений m в данную карту
Интерфейс Map Метод Object remove(Object k) Описание Удаляет вход, чей ключ равен k int size() Возвращает размер (число ключ/значение) вызывающей карты Collection values() Возвращает коллекцию, содержащую значения вызывающей карты. Этот метод обеспечивает представление значений вызывающей карты в виде коллекции пар
Классы коллекций n Динамические массивы Array. List (List), Vector (List) n Двухсвязный список Linked. List (List) n Упорядоченные множество и карта Tree. Set (Set), Tree. Map (Stored. Map) n Ряд других классов Hash. Map (Map), Hash. Set (Set), … 24
Класс Collections n Содержит ряд статических методов прикладного назначения, позволяющих оперировать объектами потокобезопасных коллекций (работа с элементами коллекций синхронизированы посредством блокировки ) n Группы методов: Создание и поддержка оберток коллекций l прикладные методы l 25
Обертки коллекций n Синхронизированные Обеспечивают механизмы синхронизации доступа для многопоточных приложений l List synchronized. List(List l), … l List synch. List = Collections. synchronized. List(new Array. List()); n Неизменяемые После заполнения контейнера лучший подход состоит в замене существующей ссылки на ссылку, произведенную вызовом метода, запрещающим изменения. l Запрещают использование методов модификации значений Map unmodifiable. Map(Map m), … l 26
Прикладные методы n Методы поиска минимума и максимума min(), max() n Работа со списками reverse(), shuffle(), fill(), copy(), n. Copies() n Сортировка списков sort() n Поиск элементов в списке binary. Search() 27
Спасибо за внимание!