Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java19.pptx
Скачиваний:
115
Добавлен:
16.04.2015
Размер:
166.64 Кб
Скачать

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

Соседние файлы в папке java1_2013_2014