Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012 1

Скачать презентацию Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012 1 Скачать презентацию Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012 1

18204-tema4_2_kollekcii_java_utils.ppt

  • Количество слайдов: 29

>Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012 Коллекции Лекция 4.2 УНЦ «Инфотех» Воронеж 2012

>1 Коллекции Коллекции (контейнеры) – хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с 1 Коллекции Коллекции (контейнеры) – хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с целью обеспечения возможностей эффективного доступа к ним В Java коллекции разделены на интерфейсы, абстрагирующие общие принципы работы с коллекциями, и классы, реализующие конкретную функциональность Не все методы, заявленные в интерфейсах, должны быть обязательными. Необязательные методы дают возможность изменить содержимое коллекции называют изменяемыми. Неизменяемые коллекции не допускают изменения содержимого. Если сделана попытка использования одного из необязательных методов на неизменяемой коллекции, выбрасывается исключение UnsupportedOperationException

>2 Интерфейс Collection Является образующим для интерфейсов коллекций  Определяет базовую функциональность любой коллекции 2 Интерфейс Collection Является образующим для интерфейсов коллекций Определяет базовую функциональность любой коллекции Подразумевает добавление, удаление, выбор элементов в коллекции Допускает дубликаты и пустые элементы

>3 Методы интерфейса Collection 3 Методы интерфейса Collection

>4 Методы интерфейса Collection 4 Методы интерфейса Collection

>5 Методы интерфейса Collection 5 Методы интерфейса Collection

>6 Методы интерфейса Collection 6 Методы интерфейса Collection

>7 Методы интерфейса Collection 7 Методы интерфейса Collection

>8 Интерфейс Set Расширяет интерфейс Collection для обработки наборов (sets) Не разрешает наличие дубликатов 8 Интерфейс Set Расширяет интерфейс Collection для обработки наборов (sets) Не разрешает наличие дубликатов Не определяется никаких дополнительных собственных методов Допускается наличие только одной ссылки null Объекты коллекции должны корректно реализовывать метод equals()

>9 Интерфейс List Расширяет интерфейс Collection  Подразумевает хранение упорядоченной последовательности объектов  Порядок 9 Интерфейс List Расширяет интерфейс Collection Подразумевает хранение упорядоченной последовательности объектов Порядок хранения определяется порядком добавления элементов Позволяет обращаться к элементам по их номеру

>10 Интерфейс List 10 Интерфейс List

>11 Интерфейс List 11 Интерфейс List

>12 Интерфейс List 12 Интерфейс List

>13 Интерфейс List 13 Интерфейс List

>14 Интерфейс Iterator  Позволяет работать с коллекцией как с набором (серией) элементов: Получать 14 Интерфейс Iterator Позволяет работать с коллекцией как с набором (серией) элементов: Получать следующий объект Object next() Проверять наличие следующего объекта boolean hasNext() Исключать объект из коллекции void remove()

>15 Интерфейс Iterator 15 Интерфейс Iterator

>16 Интерфейс Iterator 16 Интерфейс Iterator

>17 Интерфейс Iterator 17 Интерфейс Iterator

>18 Интерфейс Iterator. Пример // Демонстрирует итераторы import java.util.*; class IteratorDemo { public static 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(); 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 Подразумевает хранение набора объектов парами ключ/значение Ключи 20 Интерфейс Map Не расширяет интерфейс Collection Подразумевает хранение набора объектов парами ключ/значение Ключи должны быть уникальными Порядок следования пар ключ/значение не определен Имеет интерфейс SortedMap, расширяющий Map-интерфейс, гарантирующий, что входы поддерживаются в восходящем порядке ключей

>Интерфейс Map Интерфейс Map

>Интерфейс Map Интерфейс Map

>Интерфейс Map Интерфейс Map

>24 Классы коллекций  Динамические массивы ArrayList (List), Vector (List)  Двухсвязный список LinkedList 24 Классы коллекций Динамические массивы ArrayList (List), Vector (List) Двухсвязный список LinkedList (List) Упорядоченные множество и карта TreeSet (Set), TreeMap (StoredMap) Ряд других классов HashMap (Map), HashSet (Set), …

>25 Класс Collections  Содержит ряд статических методов прикладного назначения, позволяющих оперировать объектами потокобезопасных 25 Класс Collections Содержит ряд статических методов прикладного назначения, позволяющих оперировать объектами потокобезопасных коллекций (работа с элементами коллекций синхронизированы посредством блокировки ) Группы методов: Создание и поддержка оберток коллекций прикладные методы

>26 Обертки коллекций Синхронизированные Обеспечивают механизмы синхронизации доступа для многопоточных приложений List synchronizedList(List l), 26 Обертки коллекций Синхронизированные Обеспечивают механизмы синхронизации доступа для многопоточных приложений List synchronizedList(List l), … Неизменяемые После заполнения контейнера лучший подход состоит в замене существующей ссылки на ссылку, произведенную вызовом метода, запрещающим изменения. Запрещают использование методов модификации значений Map unmodifiableMap(Map m), … List synchList = Collections.synchronizedList(new ArrayList());

>27 Прикладные методы Методы поиска минимума и максимума min(), max() Работа со списками reverse(), 27 Прикладные методы Методы поиска минимума и максимума min(), max() Работа со списками reverse(), shuffle(), fill(), copy(), nCopies() Сортировка списков sort() Поиск элементов в списке binarySearch()

>Спасибо за внимание! Спасибо за внимание!