Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012 1
18204-tema4_2_kollekcii_java_utils.ppt
- Количество слайдов: 29
Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012
1 Коллекции Коллекции (контейнеры) – хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с целью обеспечения возможностей эффективного доступа к ним В Java коллекции разделены на интерфейсы, абстрагирующие общие принципы работы с коллекциями, и классы, реализующие конкретную функциональность Не все методы, заявленные в интерфейсах, должны быть обязательными. Необязательные методы дают возможность изменить содержимое коллекции называют изменяемыми. Неизменяемые коллекции не допускают изменения содержимого. Если сделана попытка использования одного из необязательных методов на неизменяемой коллекции, выбрасывается исключение UnsupportedOperationException
2 Интерфейс Collection Является образующим для интерфейсов коллекций Определяет базовую функциональность любой коллекции Подразумевает добавление, удаление, выбор элементов в коллекции Допускает дубликаты и пустые элементы
3 Методы интерфейса Collection
4 Методы интерфейса Collection
5 Методы интерфейса Collection
6 Методы интерфейса Collection
7 Методы интерфейса Collection
8 Интерфейс Set Расширяет интерфейс Collection для обработки наборов (sets) Не разрешает наличие дубликатов Не определяется никаких дополнительных собственных методов Допускается наличие только одной ссылки null Объекты коллекции должны корректно реализовывать метод equals()
9 Интерфейс List Расширяет интерфейс Collection Подразумевает хранение упорядоченной последовательности объектов Порядок хранения определяется порядком добавления элементов Позволяет обращаться к элементам по их номеру
10 Интерфейс List
11 Интерфейс List
12 Интерфейс List
13 Интерфейс List
14 Интерфейс Iterator Позволяет работать с коллекцией как с набором (серией) элементов: Получать следующий объект Object next() Проверять наличие следующего объекта boolean hasNext() Исключать объект из коллекции void remove()
15 Интерфейс Iterator
16 Интерфейс Iterator
17 Интерфейс Iterator
18 Интерфейс Iterator. Пример // Демонстрирует итераторы import java.util.*; class IteratorDemo { public static void main(String args[]) { // создать список массива ArrayList al = new ArrayList(); // добавить элементы в список массива 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.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println() ;
19 Интерфейс Iterator. Пример // модифицировать итерируемые объекты Listlterator litr = al.listlterator(); while(litr.hasNext()) { Object element = litr.next(); litr.set(element + " +"); } System.out.print("Модифицированное содержимое al: "); itr = al. iterator () ; while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println() ; // теперь показать список в обратном порядке System.out.print("Модифицированный (обратный) список: "); while(litr.hasPrevious()) { Object element = litr .previous () ; System.out.print(element + " "); } System.out.println(); } }
20 Интерфейс Map Не расширяет интерфейс Collection Подразумевает хранение набора объектов парами ключ/значение Ключи должны быть уникальными Порядок следования пар ключ/значение не определен Имеет интерфейс SortedMap, расширяющий Map-интерфейс, гарантирующий, что входы поддерживаются в восходящем порядке ключей
Интерфейс Map
Интерфейс Map
Интерфейс Map
24 Классы коллекций Динамические массивы ArrayList (List), Vector (List) Двухсвязный список LinkedList (List) Упорядоченные множество и карта TreeSet (Set), TreeMap (StoredMap) Ряд других классов HashMap (Map), HashSet (Set), …
25 Класс Collections Содержит ряд статических методов прикладного назначения, позволяющих оперировать объектами потокобезопасных коллекций (работа с элементами коллекций синхронизированы посредством блокировки ) Группы методов: Создание и поддержка оберток коллекций прикладные методы
26 Обертки коллекций Синхронизированные Обеспечивают механизмы синхронизации доступа для многопоточных приложений List synchronizedList(List l), … Неизменяемые После заполнения контейнера лучший подход состоит в замене существующей ссылки на ссылку, произведенную вызовом метода, запрещающим изменения. Запрещают использование методов модификации значений Map unmodifiableMap(Map m), … List synchList = Collections.synchronizedList(new ArrayList());
27 Прикладные методы Методы поиска минимума и максимума min(), max() Работа со списками reverse(), shuffle(), fill(), copy(), nCopies() Сортировка списков sort() Поиск элементов в списке binarySearch()
Спасибо за внимание!