Collections framework

Содержание

Слайд 2

Java Advanced / Collections Framework

Содержание

Коллекции
Множества
Списки
Очереди
Отображения
Упорядоченные коллекции
Алгоритмы
Устаревшие коллекции
Заключение

Java Advanced / Collections Framework Содержание Коллекции Множества Списки Очереди Отображения Упорядоченные

Слайд 3

Java Advanced / Collections Framework

Collections Framework

Набор стандартных контейнеров (коллекций) и правил их

Java Advanced / Collections Framework Collections Framework Набор стандартных контейнеров (коллекций) и
использования
Интерфейсы
Релизации
Алгоритмы
Пакет java.util

Слайд 4

Коллекции

Часть 1

Коллекции Часть 1

Слайд 5

Java Advanced / Collections Framework

Коллекции

Коллекция ─ неупорядоченный набор элементов
Интерфейс Collection

Java Advanced / Collections Framework Коллекции Коллекция ─ неупорядоченный набор элементов Интерфейс Collection

Слайд 6

Java Advanced / Collections Framework

Структура Collections Framework (1)

Java Advanced / Collections Framework Структура Collections Framework (1)

Слайд 7

Java Advanced / Collections Framework

Немодифицирующие операции

Определение размера
size() ─ количество элементов
isEmpty() ─ проверка

Java Advanced / Collections Framework Немодифицирующие операции Определение размера size() ─ количество
на пустоту
Проверки на вхождение
contains(Object o) ─ одного элемента
containsAll(Collection c) ─ всех элементов коллекции c

Слайд 8

Java Advanced / Collections Framework

Модифицирующие операции

Добавление элементов
add(Object e) ─ одного элемента
addAll(Collection c)

Java Advanced / Collections Framework Модифицирующие операции Добавление элементов add(Object e) ─
─ элементов коллекции
Удаление элементов
remove(Object e) ─ одного элемента
removeAll(Collection с) ─ элементов коллекции
retainAll(Collection с) ─ удаление элементов не из коллекции
clear() ─ удаление всех элементов
Исключения
UnsupportedOperationException

Слайд 9

Java Advanced / Collections Framework

Пример. ?

public int read(String file) throws IOException {

Java Advanced / Collections Framework Пример. ? public int read(String file) throws
Scanner scanner = new Scanner(
new File(file), "Cp1251");
int read = 0;
while (scanner.hasNext()) {
read++;
c.add(scanner.next());
}
return read;
}

Слайд 10

Java Advanced / Collections Framework

Итераторы

Итератор ─ обход коллекции
Интерфейс Iterator
Метод Iterator Collection.iterator()

Java Advanced / Collections Framework Итераторы Итератор ─ обход коллекции Интерфейс Iterator Метод Iterator Collection.iterator()

Слайд 11

Java Advanced / Collections Framework

Методы итераторов

hasNext() ─ определение наличия следующего элемента
next() ─

Java Advanced / Collections Framework Методы итераторов hasNext() ─ определение наличия следующего
взятие следующего элемента
remove() ─ удаление элемента
Исключения
NoSuchElementException ─ бросается при достижении конца коллекции
ConcurrentModificationException ─ бросается при изменении коллекции

Слайд 12

Java Advanced / Collections Framework

Применение итераторов

?
for(Iterator i = c.iterator(); i.hasNext(); ) {

Java Advanced / Collections Framework Применение итераторов ? for(Iterator i = c.iterator();
E element = (E) i.next();
...
}
?
for(Iterator i = c.iterator(); i.hasNext(); ) {
if (!p(i.next()) i.remove();
}

Слайд 13

Java Advanced / Collections Framework

Пример. ?

public void dump() {
for (Iterator i

Java Advanced / Collections Framework Пример. ? public void dump() { for
= c.iterator(); i.hasNext(); ) {
String word = (String) i.next();
System.out.print(word + ", ");
}
System.out.println();
}

Слайд 14

Множества

Часть 2

Множества Часть 2

Слайд 15

Java Advanced / Collections Framework

Множества

Множество ─ коллекция без повторяющихся элементов
Интерфейс Set

Java Advanced / Collections Framework Множества Множество ─ коллекция без повторяющихся элементов Интерфейс Set

Слайд 16

Java Advanced / Collections Framework

Структура Collections Framework (1)

Java Advanced / Collections Framework Структура Collections Framework (1)

Слайд 17

Java Advanced / Collections Framework

Сравнение элементов

Метод Object.equals(Object object)
Рефлексивность
o1.equals(o1)
Симметричность
o1.equals(o2) == e2.equals(o1)
Транзитивность
o1.equals(o2) &&

Java Advanced / Collections Framework Сравнение элементов Метод Object.equals(Object object) Рефлексивность o1.equals(o1)
o2.equals(o3) => o1.equals(o3)
Устойчивость
o1.equals(o2) не изменяется, если o1 и o2 не изменяются
Обработка null
o1.equals(null) == false

Слайд 18

Java Advanced / Collections Framework

Операции над множествами

addAll(Collection c) – объединение множеств
retainAll(Collection c)

Java Advanced / Collections Framework Операции над множествами addAll(Collection c) – объединение
– пересечение множеств
containsAll(Collection c) – проверка вхождения
removeAll(Collection c) – разность множеств

Слайд 19

Java Advanced / Collections Framework

Классы HashSet и LinkedHashSet

HashSet ─ множество на основе

Java Advanced / Collections Framework Классы HashSet и LinkedHashSet HashSet ─ множество
хэша
LinkedHashSet ─ множество на основе хэша c сохранение порядка обхода

Слайд 20

Java Advanced / Collections Framework

Вычисление хэшей

Метод Object.hashCode()
Устойчивость
hashCode() не изменяется, если объект не

Java Advanced / Collections Framework Вычисление хэшей Метод Object.hashCode() Устойчивость hashCode() не
изменяется
Согласованность с equals
o1.equals(o2) => o1.hashCode() == o2.hashCode()

Слайд 21

Java Advanced / Collections Framework

Конструкторы HashSet

HashSet() ─ пустое множество
HashSet(Collection c) ─ элементы

Java Advanced / Collections Framework Конструкторы HashSet HashSet() ─ пустое множество HashSet(Collection
коллекции
HashSet(int initialCapacity) ─ начальная вместимость
HashSet(int initialCapacity, double loadFactor) ─ начальная вместимость и степень заполнения

Слайд 22

Java Advanced / Collections Framework

Пример. ?

CollectionExample c =
new CollectionExample(new HashSet());
int

Java Advanced / Collections Framework Пример. ? CollectionExample c = new CollectionExample(new
words = c.read(args[0]);
System.out.println(“? total: " + words);
System.out.println(“? words: " +
c.getCollection().size());
c.dump();

Слайд 23

Списки

Часть 3

Списки Часть 3

Слайд 24

Java Advanced / Collections Framework

Списки

Список ─ коллекция с индексированными элементами
Интерфейс List

Java Advanced / Collections Framework Списки Список ─ коллекция с индексированными элементами Интерфейс List

Слайд 25

Java Advanced / Collections Framework

Структура Collections Framework (1)

Java Advanced / Collections Framework Структура Collections Framework (1)

Слайд 26

Java Advanced / Collections Framework

Операции со списками

Доступ по индексу
get(int i) ─ чтение
set(int

Java Advanced / Collections Framework Операции со списками Доступ по индексу get(int
I, Object e) ─ запись
add(int i, Object e) ─ добавление
remove(int i) ─ удаление
Поиск элементов
indexOf(Object e) ─ поиск с начала
lastIndexOf(Object e) ─ поиск с конца
Взятие вида
List subList(int from, int to)

Слайд 27

Java Advanced / Collections Framework

Итератор по списку

Интерфейс ListIterator extends Iterator
Метод listIterator()
Предыдущий /

Java Advanced / Collections Framework Итератор по списку Интерфейс ListIterator extends Iterator
Следующий элементы

Слайд 28

Java Advanced / Collections Framework

Операции итератора по списку

Передвижение
hasNext() / hasPrevious() ─ проверка
next()

Java Advanced / Collections Framework Операции итератора по списку Передвижение hasNext() /
/ previous() ─ взятие элемента
nextIndex() / previousIndex() ─ определение индекса
Изменение
remove() ─ удаление элемента
set(Object e) ─ изменение элемента
add(Object e) ─ добавление элемента

Слайд 29

Java Advanced / Collections Framework

Класс ArrayList

ArrayList ─ список на базе массива
Плюсы
Быстрый доступ

Java Advanced / Collections Framework Класс ArrayList ArrayList ─ список на базе
по индексу
Быстрая вставка и удаление элементов с конца
Минусы
Медленная вставка и удаление элементов

Слайд 30

Java Advanced / Collections Framework

Вместимость ArrayList

Вместимость ─ реальное количество элементов
Дополнительные методы
ensureCapacity(int c)

Java Advanced / Collections Framework Вместимость ArrayList Вместимость ─ реальное количество элементов
─ определение вместимости
trimToSize() ─ “подгонка” вместимости

Слайд 31

Java Advanced / Collections Framework

Конструкторы ArrayList

ArrayList() ─ пустой список
ArrayList(Collection c) ─ копия

Java Advanced / Collections Framework Конструкторы ArrayList ArrayList() ─ пустой список ArrayList(Collection
коллекции
ArrayList(int initialCapacity) ─ пустой список заданной вместимости

Слайд 32

Java Advanced / Collections Framework

Применения ArrayList

“Бесконечный” массив
Стек

Java Advanced / Collections Framework Применения ArrayList “Бесконечный” массив Стек

Слайд 33

Java Advanced / Collections Framework

Пример. ?

List list = new ArrayList();

for (int i

Java Advanced / Collections Framework Пример. ? List list = new ArrayList();
= list.size() - 1; i >= 0; i--) {
System.out.println(list.get(i));
}

Слайд 34

Java Advanced / Collections Framework

Класс LinkedList

LinkedList ─ двусвязный список
Плюсы
Быстрое добавление и удаление

Java Advanced / Collections Framework Класс LinkedList LinkedList ─ двусвязный список Плюсы
элементов
Минусы
Медленный доступ по индексу

Слайд 35

Java Advanced / Collections Framework

Возможности LinkedList

Конструкторы
LinkedList() ─ пустой список
LinkedList(Collection c) ─ копия

Java Advanced / Collections Framework Возможности LinkedList Конструкторы LinkedList() ─ пустой список
коллекции
Методы
addFirst(Object o) – добавить в начало списка
addLast(Object o) – добавить в конец списка
removeFirst() – удалить первый элемент
removeLast() – удалить последний элемент

Слайд 36

Java Advanced / Collections Framework

Применения LinkedList

Стек
Очередь
Дек

Java Advanced / Collections Framework Применения LinkedList Стек Очередь Дек

Слайд 37

Java Advanced / Collections Framework

Пример. ?

List list = new LinkedList();

for (ListIterator li

Java Advanced / Collections Framework Пример. ? List list = new LinkedList();
= list.listIterator(list.size());
li.hasPrevious(); )
{
System.out.println(li.previous());
}

Слайд 38

Очереди

Часть 4

Очереди Часть 4

Слайд 39

Java Advanced / Collections Framework

Структура Collections Framework (2)

Java Advanced / Collections Framework Структура Collections Framework (2)

Слайд 40

Java Advanced / Collections Framework

Очередь

Очередь – хранилище элементов для обработки
Интерфейс Queue
Свойства очередей
Порядок

Java Advanced / Collections Framework Очередь Очередь – хранилище элементов для обработки
выдачи элементов определяется конкретной реализацией
Очереди не могут хранить null
У очереди может быть ограничен размер

Слайд 41

Java Advanced / Collections Framework

Методы очередей

Обычные методы
add(Object o) – добавить элемент
Бросает IllegalStateException

Java Advanced / Collections Framework Методы очередей Обычные методы add(Object o) –

Object element() – вершина очереди
Бросает NoSuchElementException
Object remove() – удалить элемент из вершины
Бросает NoSuchElementException
Методы, не бросающие исключений
offer(Object o) – добавить элемент
Object peek() – вершина очереди
Object poll() – удалить элемент из вершины

Слайд 42

Java Advanced / Collections Framework

Класс LinkedList

Очередь на двусвязном списке

Java Advanced / Collections Framework Класс LinkedList Очередь на двусвязном списке

Слайд 43

Отображения

Часть 5

Отображения Часть 5

Слайд 44

Java Advanced / Collections Framework

Структура Collections Framework (2)

Java Advanced / Collections Framework Структура Collections Framework (2)

Слайд 45

Java Advanced / Collections Framework

Отображение

Отображение ─ множество пар ключ-значение при уникальности ключа
Интерфейс

Java Advanced / Collections Framework Отображение Отображение ─ множество пар ключ-значение при уникальности ключа Интерфейс Map
Map

Слайд 46

Java Advanced / Collections Framework

Методы отображений (1)

Доступ
get(Object k) ─ получение значение
put(Object k,

Java Advanced / Collections Framework Методы отображений (1) Доступ get(Object k) ─
Object v) ─ запись
remove(Object k) ─ удаление
Проверки
containsKey(Object k) ─ наличие ключа
containsValue(Object v) ─ наличие значения
Определения размера
size() ─ размер отображения
isEmpty() ─ проверка на пустоту

Слайд 47

Java Advanced / Collections Framework

Методы отображений (2)

Взятие видов
entrySet() ─ множество пар
values() ─

Java Advanced / Collections Framework Методы отображений (2) Взятие видов entrySet() ─
коллекция значений
keySet() ─ множество ключей
Массовые операции
putAll(Map map) ─ добавление всех пар

Слайд 48

Java Advanced / Collections Framework

Пары

Пара ─ ключ + значение
Интерфейс Map.Entry
Методы
Object getKey()
Object getValue()
setValue(Object

Java Advanced / Collections Framework Пары Пара ─ ключ + значение Интерфейс
v)

Слайд 49

Java Advanced / Collections Framework

Классы HashMap и LinkedHashMap

HashMap ─ отображение на основе

Java Advanced / Collections Framework Классы HashMap и LinkedHashMap HashMap ─ отображение
хэшей
LinkedHashMap ─ отображение на основе хэшей с сохранением порядка обхода

Слайд 50

Java Advanced / Collections Framework

Конструкторы HashMap

HashMap() ─ пустое отображение
HashMap(Map m) ─ копия

Java Advanced / Collections Framework Конструкторы HashMap HashMap() ─ пустое отображение HashMap(Map
отображения
HashMap(int initialCapacity) ─ начальная вместимость
HashMap (int initialCapacity, int loadFactor) ─ начальная вместимость и степень заполнения

Слайд 51

Java Advanced / Collections Framework

Пример. ?

while (scanner.hasNext()) {
String word = scanner.next();

Java Advanced / Collections Framework Пример. ? while (scanner.hasNext()) { String word
Integer count = (Integer) map.get(word);
int value = (count == null)
? 0
: count.intValue();
map.put(word, new Integer(value + 1));
}

Слайд 52

Java Advanced / Collections Framework

Пример. ?

for (
Iterator i = map.entrySet().iterator(); i.hasNext();

Java Advanced / Collections Framework Пример. ? for ( Iterator i =

) {
Map.Entry entry = (Map.Entry) i.next();
System.out.println(
entry.getKey() + " " + entry.getValue());
}

Слайд 53

Упорядоченные коллекции

Часть 6

Упорядоченные коллекции Часть 6

Слайд 54

Java Advanced / Collections Framework

Структура Collections Framework (1)

Java Advanced / Collections Framework Структура Collections Framework (1)

Слайд 55

Java Advanced / Collections Framework

Структура Collections Framework (2)

Java Advanced / Collections Framework Структура Collections Framework (2)

Слайд 56

Java Advanced / Collections Framework

Сравнение элементов

Интерфейс Comparable
int compareTo(Object o) ─ естественный порядок
Интерфейс

Java Advanced / Collections Framework Сравнение элементов Интерфейс Comparable int compareTo(Object o)
Comparator
int compare(Object o1, Object o2) ─ сравнение элементов

Слайд 57

Java Advanced / Collections Framework

Сравнение элементов (контракт)

Транзитивность
Антисимметричность
sgn(o1.compareTo(o2)) == -sgn(o2.compareTo(o1))
Согласованность с равенством
o1.compareTo(o2) ==

Java Advanced / Collections Framework Сравнение элементов (контракт) Транзитивность Антисимметричность sgn(o1.compareTo(o2)) ==
0 =>
sgn(o1.compareTo(o3)) == sgn(o2.compareTo(o3))
Согласованность с equals()
o1.equals(o2) == (o1.compareTo(o2) == 0)

Слайд 58

Java Advanced / Collections Framework

Упорядоченные множества

Интерфейс SortedSet
first() – минимальный элемент
last() – максимальный

Java Advanced / Collections Framework Упорядоченные множества Интерфейс SortedSet first() – минимальный
элемент
headSet(Object o) – подмножество элементов меньших o
tailSet(Object o) – подмножество элементов больших либо равных o
subSet(Object o1, Object o2) – подмножество элементов меньших o2 и больше либо равных o2
Класс TreeSet

Слайд 59

Java Advanced / Collections Framework

Упорядоченные отображения

Интерфейс SortedMap
firstKey() – минимальный ключ
lastKey() – максимальный

Java Advanced / Collections Framework Упорядоченные отображения Интерфейс SortedMap firstKey() – минимальный
ключ
headMap(Object o) – отображение ключей меньших o
tailMap(Object o) – отображение ключей больших либо равных o
subMap(Object o1, Object o2) – отображение ключей меньших o2 и больше либо равных o1
Класс TreeMap

Слайд 60

Java Advanced / Collections Framework

Класс PriorityQueue

Очередь с приоритетами
Реализована на основе двоичной кучи

Java Advanced / Collections Framework Класс PriorityQueue Очередь с приоритетами Реализована на основе двоичной кучи

Слайд 61

Java Advanced / Collections Framework

Пример. Применение TreeSet

Естественный порядок
CollectionExample c = new CollectionExample(

Java Advanced / Collections Framework Пример. Применение TreeSet Естественный порядок CollectionExample c
new TreeSet());
c.read(args[0]);
c.dump();
Порядок без учета регистра
CollectionExample c = new CollectionExample(new TreeSet(String.CASE_INSENSITIVE_ORDER));
int words = c.read(args[0]);
c.dump();

Слайд 62

Алгоритмы

Часть 7

Алгоритмы Часть 7

Слайд 63

Java Advanced / Collections Framework

Класс Collections

Алгоритмы для работы с коллекциями
Простые операции
Перемешивание
Сортировка
Двоичный поиск
Поиск

Java Advanced / Collections Framework Класс Collections Алгоритмы для работы с коллекциями
минимума и максимума
Специальные коллекции
Оболочки коллекций

Слайд 64

Java Advanced / Collections Framework

Простые операции

Заполнение списка указанным значением
fill(List l, Object v)
Переворачивание

Java Advanced / Collections Framework Простые операции Заполнение списка указанным значением fill(List
списка
reverse(List l)
Копирование из списка в список
copy(List l1, List l2)

Слайд 65

Java Advanced / Collections Framework

Перемешивание

Генерирует случайную перестановку
Методы
shuffle(List l)
shuffle(List l, Random r)

Java Advanced / Collections Framework Перемешивание Генерирует случайную перестановку Методы shuffle(List l) shuffle(List l, Random r)

Слайд 66

Java Advanced / Collections Framework

Сортировки

Устойчивая сортировка
Алгоритм – Merge Sort
Методы
sort(List l) – сортировка

Java Advanced / Collections Framework Сортировки Устойчивая сортировка Алгоритм – Merge Sort
списка (естественный порядок)
sort(List l, Comparator c) – сортировка списка (указанный порядок)

Слайд 67

Java Advanced / Collections Framework

Двоичный поиск

Осуществляет двоичный поиск в списке
Методы
binarySearch(List l, Object

Java Advanced / Collections Framework Двоичный поиск Осуществляет двоичный поиск в списке
o) – ищет o в списке
binarySearch(List l, Object o, Comparator c) – ищет o в списке

Слайд 68

Java Advanced / Collections Framework

Поиск минимума и максимума

Поиск минимума
min(Collection c) – минимальный

Java Advanced / Collections Framework Поиск минимума и максимума Поиск минимума min(Collection
элемент (естественный порядок)
min(Collection c, Comparator cmp) – минимальный элемент (указанный порядок)
Поиск максимума
max(Collection c) – максимальный элемент (естественный порядок)
max(Collection c, Comparator cmp) – максимальный элемент (указанный порядок)

Слайд 69

Java Advanced / Collections Framework

Пример. Алгоритмы на списках

List list = new ArrayList();
CollectionExample

Java Advanced / Collections Framework Пример. Алгоритмы на списках List list =
c = new CollectionExample(list);
c.read(args[0]);
Collections.reverse(list);
Collections.shuffle(list);
Collections.sort(list);
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
Collections.fill(list, "temp");
System.out.println(Collections.min(list));
System.out.println(Collections.min(list, String.CASE_INSENSITIVE_ORDER));

Слайд 70

Java Advanced / Collections Framework

Оболочки коллекций

Неизменяемые виды на коллекции
unmodifiableSet(Set s) – неизменяемое

Java Advanced / Collections Framework Оболочки коллекций Неизменяемые виды на коллекции unmodifiableSet(Set
множество
unmodifiableSortedSet(SortedSet s) – неизменяемое упорядоченное множество
unmodifiableList(List l) – неизменяемый список
unmodifiableMap(Map m) – неизменяемое отображение
unmodifiableSortedMap(SortedMap m) – неизменяемое упорядоченное отображени

Слайд 71

Java Advanced / Collections Framework

Класс Arrays

Операции с массивами
Сортировка
Двоичный поиск
Поиск минимума и максимума
Заполнение
Перемешивание
Вид

Java Advanced / Collections Framework Класс Arrays Операции с массивами Сортировка Двоичный
массива как списка
List asList()

Слайд 72

Устаревшие коллекции

Часть 8

Устаревшие коллекции Часть 8

Слайд 73

Java Advanced / Collections Framework

Устаревшие коллекции

Устаревшие коллекции являются синхронизированными
Vector (ArrayList)
Stack (ArrayList)
Dictionary (Map)
Hashtable

Java Advanced / Collections Framework Устаревшие коллекции Устаревшие коллекции являются синхронизированными Vector
(HashMap)
Enumeration (Iterator)

Слайд 74

Заключение

Часть 9

Заключение Часть 9

Слайд 75

Java Advanced / Collections Framework

Ссылки

Collections Framework // http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html
Collections Tutorial // http://java.sun.com/docs/books/tutorial/collections/index.html
Introduction to

Java Advanced / Collections Framework Ссылки Collections Framework // http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html Collections Tutorial
the Collections Framework // http://java.sun.com/developer/onlineTraining/collections/
Имя файла: Collections-framework.pptx
Количество просмотров: 215
Количество скачиваний: 2