
- •JAVA-ТЕХНОЛОГИЯ
- •Коллекции
- •Интерфейс Collection
- •Расширения интерфейса Collection
- •Реализации интерфейса Collection
- •Реализации интерфейса Collection
- •Цикл for-each и Iterator
- •Цикл for-each и Iterator: примеры[1]
- •Цикл for-each и Iterator: примеры[2]
- •Интерфейс Comparator
- •Карты (Интерфейс Map)
- •Расширения интерфейса Map
- •Реализации интерфейса Map
- •Преобразование карты в
- •Класс Collections
- •Класс Collections
- •Класс Collections: примеры[1]
- •Класс Collections: примеры[2]
- •Класс StringTokenizer
- •Класс StringTokenizer
- •Класс BitSet
- •Класс BitSet
- •Класс Date
- •Класс Calendar
- •Другие классы для работы с датами и часовыми поясами
- •Класс Random
- •Класс Random
- •Класс Observable
- •Класс Timer и TimerTask
- •Класс Timer и TimerTask
- •Класс Formatter
- •Класс Formatter
- •Класс Scanner
- •Другие утилиты пакета java.util

JAVA-ТЕХНОЛОГИЯ
Сафонов Владимир Олегович
Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)
Email: vosafonov@gmail.com
Лекция 19
Коллекции. Пакет java.util

Коллекции
Коллекции были введены в JDK 1.2
Все структуры данных, кроме Map, HashMap, HashTable пакета java.util реализуют интерфейс Collection напрямую, либо через своих предков
Содержимое Map можно обрабатывать как коллекции
(C)В.О. Сафонов. 2013

Интерфейс Collection
Collection – вершина иерархии коллекций. Позволяет управлять группами объектов. Все классы коллекций реализуют его напрямую, либо через предков.
public interface Collection<E> extends Iterable<E> {
……
Iterator<E> iterator();
……
}
Collection наследует интерфейс Iterable(java.lang) и имеет метод, возвращающий итератор, установленный на начало коллекции.
(C)В.О. Сафонов. 2013

Расширения интерфейса Collection
List – управление списками объектов.
Set – управление множествами, то есть коллекциями состоящими только из уникальных элементов.
Queue – управление очередями, то есть списками в которых удаление только с начала.
SortedSet – управление сортированными множествами, то есть множествами на которых задан некоторый порядок.
(JavaSE6) Deque – расширяет Queue обработки для двунаправленными очередями
(JavaSE6) NavigableSet – расширяет SortedSet для обработки извлечения элементов на основе поисков по ближайшему соответствию
(C) В.О. Сафонов. 2013

Реализации интерфейса Collection
Абстрактные классы с частичной реализацией интерфейсов:
AbstractCollection, AbstractList, AbstractSequentalList, AbstractQueue, AbstractSet
Полные реализации интерфейсов:
LinkedList – связанный список ArrayList – динамический массив
EnumSet – работа с объектами типа Enum
HashSet – элементы хранятся по принципу хеш-таблицы
LinkedHashSet – перебор элементов итератором происходит в том же порядке, в котором добавлялись элементы
PriorityQueue – очередь с приоритетами на базе компаратора очереди
TreeSet – элементы хранятся в отсортированном виде в дереве
(C) В.О. Сафонов. 2013

Реализации интерфейса Collection
Классы коллекций не синхронизированы (non MT-safe)
Из ранних версий Java для совместимости в пакете java.util остались классы Vector, Stack и Hashtable. Они не реализуют интерфейс Collection и являются синхронизированными.
(C) В.О. Сафонов. 2013

Цикл for-each и Iterator
Цикл for-each:
Collection наследует интерфейс Iterable. Это значит, что элементы коллекции можно просматривать в циклое “for-
each”ArrayList<String>. list; for(String s : list){
//……..//
}
Интерфейс Iterator:
Все коллекции имеют метод iterator(), который возвращает Iterator, установленный на начало коллекции. Через него можно организовать доступ к содержимому
коллекции
public interface Iterator<E> { boolean hasNext();
E next();
void remove();
}
(C) В.О. Сафонов. 2013

Цикл for-each и Iterator: примеры[1]
class ForEachExample {
public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("1");
list.add("2");
list.add("3");
//цикл for в стиле “for-each” for(String temp : list){
//выводим на экран текущий элемент
System.out.println(temp);
}
}
}
(C) В.О. Сафонов. 2013

Цикл for-each и Iterator: примеры[2]
class IteratorExample {
public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("1");
list.add("2");
list.add("3");
//получаем Iterator
Iterator<String> it = list.iterator(); while(it.hasNext()){
//выводим на экран текущий элемент и сдвигаем позицию итератора
System.out.println(it.next());
}
}
}
(C) В.О. Сафонов. 2013

Интерфейс Comparator
Реализация Comparator<T> определяет сравнение двух объектов(больше, меньше, равно) типа Т.
public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj);
}
По соглашению, функция compare(T o1, T o2) должна возвращать отрицательно число, если o1<o2, ноль, если o1=o2, и положительное число, если o1>o2.
(C) В.О. Сафонов. 2013