Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Java.SE.06. Generic and collections

Содержание

2011 © EPAM Systems, RD Dep.СодержаниеОпределение коллекцийИнтерфейс CollectionМножества SetИнтерфейс IteratorСравнение коллекций. Comparator, ComparableСписки ListОчереди QueueКарты отображений MapКласс CollectionsУнаследованные коллекцииКоллекции для перечислений
GENERIC & COLLECTIONSIhar BlinouOracle Certified Java Instructorihar_blinou@epam.comJava.SE.062011 © EPAM Systems, RD Dep. 2011 © EPAM Systems, RD Dep.СодержаниеОпределение коллекцийИнтерфейс CollectionМножества SetИнтерфейс IteratorСравнение коллекций. Comparator, ОПРЕДЕЛЕНИЕ КОЛЛЕКЦИЙ2011 © EPAM Systems, RD Dep. Определение коллекцийКоллекции – это хранилища, поддерживающие различные способы накопления и упорядочения объектов Определение коллекцийCollections framework - это унифицированная архитектура для представления и манипулирования коллекциями.Collections Определение коллекцийИнтерфейсы коллекций:	Collection – вершина иерархии остальных коллекций; List – специализирует коллекции Определение коллекций2011 © EPAM Systems, RD Dep. Определение коллекций2011 © EPAM Systems, RD Dep. Определение коллекцийВсе конкретные классы Java Collections Framework реализуют Cloneable и Serializable интерфейсы, Определение коллекцийРеализации (Implementations)Конкретные реализации интерфейсов могут быть следующих типов:General-purpose implementationsSpecial-purpose implementationsConcurrent implementationsWrapper Определение коллекцийGeneral-Purpose Implementations - реализации общего назначения, наиболее часто используемые реализации, HashSet, Определение коллекцийSpecial-Purpose Implementations - реализации специального назначения, разработаны для использования в специальных Определение коллекцийConcurrent implementations – потоковые реализацииConcurrentHashMapLinkedBlockingQueueArrayBlockingQueuePriorityBlockingQueueDelayQueueSynchronousQueueLinkedTransferQueue 2011 © EPAM Systems, RD Dep. Определение коллекцийWrapper implementations – реализация обертки, применяется для реализации нескольких типов в Определение коллекцийConvenience implementations – удобные реализации, выполнены обычно с использованием реализаций общего Определение коллекцийAbstract implementations – основа всех реализаций коллекций, которая облегчает создание собственных Определение коллекцийАлгоритмы (Algorithms)Это методы, которые выполняют некоторые вычисления, такие как поиск, сортировка ИНТЕРФЕЙС COLLECTION2011 © EPAM Systems, RD Dep. Интерфейс CollectionИнтерфейс Collection - вершина иерархии коллекцийИнтерфейс Collection - наименьший набор характеристик, Интерфейс Collectionpublic interface Collection extends Iterable {boolean equals(Object o);int size(); //возвращает количество Интерфейс Collectionboolean containsAll(Collection c); //возвращает true, если коллекция содержит все элементы из Интерфейс Collectioninterface Iterable{Iterator iterator(); // возвращает итератор по множеству элементов T}2011 © EPAM Systems, RD Dep. Интерфейс CollectionКласс AbstractCollection - convenience class, предоставляет частичную реализацию интерфейса Collection, реализует Интерфейс CollectionНекоторые методы интерфейса Collection могут быть не реализованы в подклассах (нет МНОЖЕСТВА SET2011 © EPAM Systems, RD Dep. Множества SetМножество ─ коллекция без повторяющихся элементовИнтерфейс Set содержит методы, унаследованные Collection Множества Set2011 © EPAM Systems, RD Dep. Множества SetИнтерфейс Set заботится об уникальности хранимых объектов, уникальность определятся реализацией метода Множества Setpublic interface Set extends Collection {int size(); //возвращает количество элементов в Множества Setboolean containsAll(Collection c); // возвращает true, если множество содержит все элементы Множества SetSet также добавляет соглашение на поведение методов equals и hashCode, позволяющих Множества SetПравила сравнения на равенствоМетод boolean equals(Object o) Рефлексивность		o1.equals(o1) Симметричность		o1.equals(o2) == e2.equals(o1) Транзитивность		o1.equals(o2) Множества SetИнтерфейс SortedSet из пакета java.util, расширяющий интерфейс Set, описывает упорядоченное множество, Множества Set public interface SortedSet extends Set{Comparator Множества SetИнтерфейс NavigableSet добавляет возможность перемещения, Множества Setpublic interface NavigableSet extends SortedSet{E lower(E e); E floor(E e); E Множества Set// методы, позволяющие получить подмножество элементов. Параметры fromElement и toElement ограничивают Множества SetКласс AbstractSet - convenience class , который наследуется от AbstractCollection и Множества SetHashSet – неотсортированная и неупорядоченная коллекция, для вставки элемента используются методы Множества SetКонструкторы HashSetHashSet() ─ создает пустое множество;HashSet(Collection Множества SetДля эффективности объекты, добавляемые в множество должны реализовывать hashСode.Метод int hashCode() Множества Set. Example 012011 © EPAM Systems, RD Dep.[San Francisco, New York, Множества SetLinkedHashSet ─ множество на основе хэша c сохранением порядка обхода.2011 © EPAM Systems, RD Dep. Множества Set. Example 02Результат:2011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.LinkedHashSet;import java.util.Set;public Множества SetTreeSet – реализует интерфейс NavigableSet, который поддерживает элементы в отсортированном по Множества SetИспользуется в том случае, если необходимо использовать операции, определенные в интерфейсе Множества SetКонструкторы TreeSet:TreeSet();TreeSet(Collection Множества SetКласс TreeSet содержит методы по извлечению первого и последнего (наименьшего и Множества Set. Example 032011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.HashSet;import java.util.Set;import Множества Set. Example 03Результат:2011 © EPAM Systems, RD Dep.[Berling, London, New York, ИНТЕРФЕЙС ITERATOR2011 © EPAM Systems, RD Dep. Интерфейс IteratorДля обхода коллекции можно использовать:for-eachКонструкция for-each является краткой формой записи обхода Интерфейс IteratorИнтерфейс Iterator используется для доступа к элементам коллекции Iterator iterator() – Интерфейс Iteratorpublic interface Iterator {boolean hasNext(); // возвращает true при наличии следующего Интерфейс IteratorИсключения:NoSuchElementException ─ генерируется при достижении конца коллекцииConcurrentModificationException ─ генерируется при изменении Интерфейс Iterator. Example 042011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.HashSet;import java.util.Iterator;import Интерфейс Iterator. Example 04Результат:2011 © EPAM Systems, RD Dep.[San Francisco, New York, Интерфейс IteratorИспользуйте Iterator вместо for-each если вам необходимо удалить текущий элемент.Конструкция for-each Интерфейс IteratorЧтобы удалить все экземпляры определенного элемента е из коллекции с воспользуйтесь СРАВНЕНИЕ ОБЪЕКТОВ. COMPATATOR, COMPARABLE2011 © EPAM Systems, RD Dep. Сравнение коллекций. Comparator, ComparableЕстественный порядок сортировки (natural sort order) — естественный и Сравнение коллекций. Comparator, ComparableРеализация Comparable позволяет:Вызвать Collections.sort иCollections.binarySearchВызывать Arrays.sort и Arrays.binarySearchИспользовать такие Сравнение коллекций. Comparator, ComparableМетод compareTo должен выполнять следующие условия. sgn(x.compareTo(y)) == -sgn(y.compareTo(x))если Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.package _java._se._06.comparable;public Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.public int Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.package _java._se._06.comparable;import Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.	System.out.println( Сравнение коллекций. Comparator, Comparable. Example 05Результат:2011 © EPAM Systems, RD Dep.Natural OrderGoodyear, Сравнение коллекций. Comparator, ComparableПри реализации интерфейса Comparator существует возможность сортировки списка объектов Сравнение коллекций. Comparator, Comparablejava.util.Comparator — содержит два метода:int compare(T o1, T o2) Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package _java._se._06.comparator;public Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package _java._se._06.comparator;public Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package _java._se._06.comparator;import Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package _java._se._06.comparator;import Сравнение коллекций. Comparator, Comparable. Example 06Результат:2011 © EPAM Systems, RD Dep.A sorted СПИСКИ LIST2011 © EPAM Systems, RD Dep. Списки ListСписок - упорядоченная коллекция (иногда называется sequence)Список может содержать повторяющиеся элементы.Интерфейс Списки List2011 © EPAM Systems, RD Dep. Списки Listpublic interface List extends Collection {E get(int index); //возвращает объект, находящийся Списки Listint indexOf(Object o); //возвращает индекс первого появления элемента o в списке;int Списки ListКласс AbstractList предоставляет частичную реализацию для интерфейса List.Класс AbstractSequentialList расширяет AbstractList, Списки ListListIterator - это итератор для списка2011 © EPAM Systems, RD Dep. Списки Listinterface ListIterator extends Iterator{boolean hasNext() / boolean hasPrevious() // проверкаE next() Списки ListArrayList ─ список на базе массива (реализация List)ДостоинстваБыстрый доступ по индексуБыстрая Списки ListКонструкторы ArrayListArrayList() ─ пустой списокArrayList(Collection Списки ListLinkedList ─ двусвязный список (реализация List) ДостоинстваБыстрое добавление и удаление элементовНедостаткиМедленный Списки ListКонструкторы LinkedListLinkedList () //пустой списокLinkedList(Collection Списки List. Example 072011 © EPAM Systems, RD Dep.package _java._se._06.list;import java.util.ArrayList;import java.util.LinkedList;import Списки List. Example 072011 © EPAM Systems, RD Dep.	LinkedList linkedList 			= new Списки List. Example 07Результат:2011 © EPAM Systems, RD Dep.A list of integers ОЧЕРЕДИ QUEUE2011 © EPAM Systems, RD Dep. Очереди QueueОчередь, предназначенная для размещения элемента перед его обработкой. Расширяет коллекцию методами Очереди QueueКроме базовых методов Collection очередь(Queue) предоставляет дополнительные методы по добавлению, извлечению Очереди Queue2011 © EPAM Systems, RD Dep. Очереди Queuepublic interface Queue extends Collection {E	element(); // возвращает, но не удаляет Очереди QueueКласс AbstractQueue – реализует методы интерфейса Queue: size()offer(Object o)peek()poll()iterator()2011 © EPAM Systems, RD Dep. Очереди Queue. Example 082011 © EPAM Systems, RD Dep.package _java._se._06.queue;public class QueueExample Очереди QueueИнтерфейс Deque позволяет реализовать двунаправленная очередь, разрешающую вставку и удаление элементов Очереди QueueВторая форма добавления элементов в очередь сделана специально для реализаций Deque, Очереди QueueArrayDeque - эффективная реализация интерфейса Deque переменного размераКонструкторы:ArrayDeque(); // создает пустую Очереди Queue. Example 09Результат:2011 © EPAM Systems, RD Dep.package _java._se._06.queue;public class DequeExample Очереди Queue. Example 102011 © EPAM Systems, RD Dep.package _java._se._06.queue;import java.util.ArrayDeque;import java.util.Deque;public Очереди Queue. Example 102011 © EPAM Systems, RD Dep.D C B A A B C DРезультат: Очереди QueuePriorityQueue – это класс очереди с приоритетами. По умолчанию очередь с Очереди QueueКонструкторы PriorityQueue:PriorityQueue(); // создает очередь с приоритетами начальной емкостью 11, размещающую Очереди Queue. Example 112011 © EPAM Systems, RD Dep.package _java._se._06.queue;import java.util.Collections;import java.util.PriorityQueue;public Очереди Queue. Example 112011 © EPAM Systems, RD Dep.	PriorityQueue queue2 			= new Очереди Queue. Example 11Результат:2011 © EPAM Systems, RD Dep.Priority queue using Comparable:Georgia КАРТЫ ОТОБРАЖЕНИЙ MAP2011 © EPAM Systems, RD Dep. Карты отображений MapИнтерфейс Map работает с наборами пар объектов «ключ-значение» Все ключи Карты отображений Map2011 © EPAM Systems, RD Dep. Карты отображений Mappublic interface Map {V put(K key, V value); // записьV Карты отображений Mappublic static interface Map.Entry {boolean equals(Object o); // сравнивает объект Карты отображений Mappublic interface SortedMap extends Map{Comparator Карты отображений Map2011 © EPAM Systems, RD Dep.public interface NavigableMap extends SortedMap{ Карты отображений Map2011 © EPAM Systems, RD Dep. // Методы pollFirstEntry и Карты отображений Map2011 © EPAM Systems, RD Dep.// Методы, позволяющие получить набор Карты отображений Map2011 © EPAM Systems, RD Dep.// Методы, позволяющие извлечь из Карты отображений MapHashMap – неотсортированная и неупорядоченная карта, эффективность работы HashMap зависит Карты отображений MapLinkedHashMap –хранит элементы в порядке вставки.LinkedHashMap добавляет и удаляет объекты Карты отображений MapTreeMap –хранит элементы в порядке сортировки.По умолчанию TreeMap сортирует элементы Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.package _java._se._06.map;import java.util.HashMap;import Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.		Map treeMap = Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.Display entries in Карты отображений Map. Example 13 2011 © EPAM Systems, RD Dep.package _java._se._06.map;import Карты отображений Map. Example 13 2011 © EPAM Systems, RD Dep.java.runtime.name -- КЛАСС COLLECTIONS2011 © EPAM Systems, RD Dep. Класс CollectionsCollections — класс, состоящий из статических методов, осуществляющих различные служебные операции Класс Collections2011 © EPAM Systems, RD Dep. Класс Collections2011 © EPAM Systems, RD Dep. Класс Collections2011 © EPAM Systems, RD Dep.. Класс Collections. Example 142011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 152011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 162011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 172011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 182011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 192011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collections;import Класс Collections. Example 202011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collection;import Класс Collections. Example 212011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collection;import Класс Collections. Example 222011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import java.util.Collection;import Класс Collections. Example 232011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.ArrayList;import java.util.Arrays;import УНАСЛЕДОВАННЫЕ КОЛЛЕКЦИИ2011 © EPAM Systems, RD Dep. Унаследованные коллекцииУнаследованные коллекции (Legacy Collections) – это коллекции языка Java 1.0/1.1В ряде Унаследованные коллекции2011 © EPAM Systems, RD Dep. Унаследованные коллекцииVector –устаревшая версия ArrayList, его функциональность схожа с ArrayList за исключением Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Enumeration;import java.util.Vector;public Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.		v.addElement(new Double(6.08));		v.addElement(new Integer(7));		System.out.println( Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.	  // enumerate Enumeration – объекты классов, реализующих данный интерфейс, используются для предоставления однопроходного последовательного Унаследованные коллекцииКласс Stack позволяет создавать очередь типа last-in-first-out (LIFO)public class Stack extends Унаследованные коллекции. Example 252011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Stack;import java.util.StringTokenizer;public Унаследованные коллекцииHashtable – после модификации в JDK 1.2 реализует интерфейс Map. Порядок Унаследованные коллекции. Example 262011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Collection;import java.util.Enumeration;import Унаследованные коллекции. Example 262011 © EPAM Systems, RD Dep.		c.remove( Унаследованные коллекцииКласс Properties предназначен для хранения набора свойств (параметров).МетодыString getProperty(String key)String getProperty(String Унаследованные коллекцииМетод load(InputStream inStream) позволяет загрузить набор свойств из входного потока.Параметры представляют Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Iterator;import java.util.Properties;import Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.	  // Show Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.Результат:The capital of Missouri Унаследованные коллекцииКласс BitSet предназначен для работы с последовательностями битов. Каждый компонент. этой Унаследованные коллекцииПо умолчанию все биты в наборе устанавливаются в 0 (false). Установка Унаследованные коллекции. Example 282011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.BitSet;public class КОЛЛЕКЦИИ ДЛЯ ПЕРЕЧИСЛЕНИЙ2011 © EPAM Systems, RD Dep. Коллекции для перечисленийАбстрактный класс EnumSet (наследуется от абстрактного класса AbstractSet) - специально Коллекции для перечисленийСоздание EnumSetEnumSet EnumSet.noneOf(T.class); // cоздает пустое множество нумерованных констант с Коллекции для перечисленийEnumSet EnumSet.complementOf(EnumSet s); // создается множество, содержащее все элементы, которые Коллекции для перечислений. Example 292011 © EPAM Systems, RD Dep.package _java._se._06.enum_;import java.util.EnumSet;enum Коллекции для перечисленийEnumMap - высоко производительное отображение (map). В качестве ключей используются Коллекции для перечисленийСоздать объект EnumMap:Создать синхронизированный объект EnumMap:2011 © EPAM Systems, RD Коллекции для перечислений. Example 302011 © EPAM Systems, RD Dep.package _java._se._06.enum_;import java.util.EnumMap;enum Коллекции для перечислений2011 © EPAM Systems, RD Dep.Результат:S:SM:ML:LXL:XLXXL:XXLXXXL:XXXL Java.SE.06Generic&Collections2011 © EPAM Systems, RD Dep.Ihar Blinou, PhDOracle Certified Java InstructorIhar_blinou@epam.com
Слайды презентации

Слайд 2 2011 © EPAM Systems, RD Dep.
Содержание
Определение коллекций
Интерфейс Collection
Множества

2011 © EPAM Systems, RD Dep.СодержаниеОпределение коллекцийИнтерфейс CollectionМножества SetИнтерфейс IteratorСравнение коллекций.

Set
Интерфейс Iterator
Сравнение коллекций. Comparator, Comparable
Списки List
Очереди Queue
Карты отображений Map
Класс

Collections
Унаследованные коллекции
Коллекции для перечислений

Слайд 3 ОПРЕДЕЛЕНИЕ КОЛЛЕКЦИЙ
2011 © EPAM Systems, RD Dep.

ОПРЕДЕЛЕНИЕ КОЛЛЕКЦИЙ2011 © EPAM Systems, RD Dep.

Слайд 4 Определение коллекций
Коллекции – это хранилища, поддерживающие различные способы

Определение коллекцийКоллекции – это хранилища, поддерживающие различные способы накопления и упорядочения

накопления и упорядочения объектов с целью обеспечения возможностей эффективного

доступа к ним.
Применение коллекций обуславливается возросшими объемами обрабатываемой информации.

Коллекции в языке Java объединены в библиотеке классов java.util и представляют собой контейнеры, т.е объекты, которые группируют несколько элементов в отдельный модуль.

Коллекции используются для хранения, поиска, манипулирования и передачи данных.

Коллекции – это динамические массивы, связные списки, деревья, множества, хэш-таблицы, стеки, очереди.

2011 © EPAM Systems, RD Dep.


Слайд 5 Определение коллекций
Collections framework - это унифицированная архитектура для

Определение коллекцийCollections framework - это унифицированная архитектура для представления и манипулирования

представления и манипулирования коллекциями.


Collections framework содержит:

Интерфейсы
Реализации (Implementations)
Алгоритмы

2011 © EPAM

Systems, RD Dep.

Слайд 6 Определение коллекций
Интерфейсы коллекций:

Collection – вершина иерархии остальных коллекций;

Определение коллекцийИнтерфейсы коллекций:	Collection – вершина иерархии остальных коллекций; List – специализирует


List – специализирует коллекции для обработки списков;
Set – специализирует

коллекции для обработки множеств, содержащих уникальные элементы;
Map – карта отображения вида “ключ-значение”.


Интерфейсы позволяют манипулировать коллекциями независимо от деталей конкретной реализации, реализуя тем самым принцип полиморфизма

2011 © EPAM Systems, RD Dep.


Слайд 7 Определение коллекций
2011 © EPAM Systems, RD Dep.

Определение коллекций2011 © EPAM Systems, RD Dep.

Слайд 8 Определение коллекций
2011 © EPAM Systems, RD Dep.

Определение коллекций2011 © EPAM Systems, RD Dep.

Слайд 9 Определение коллекций
Все конкретные классы Java Collections Framework реализуют

Определение коллекцийВсе конкретные классы Java Collections Framework реализуют Cloneable и Serializable

Cloneable и Serializable интерфейсы, следовательно, их экземпляры могут быть

клонированы и сериализованы.

2011 © EPAM Systems, RD Dep.


Слайд 10 Определение коллекций
Реализации (Implementations)

Конкретные реализации интерфейсов могут быть следующих

Определение коллекцийРеализации (Implementations)Конкретные реализации интерфейсов могут быть следующих типов:General-purpose implementationsSpecial-purpose implementationsConcurrent

типов:

General-purpose implementations
Special-purpose implementations
Concurrent implementations
Wrapper implementations
Convenience implementations
Abstract implementations

2011 © EPAM

Systems, RD Dep.

Слайд 11 Определение коллекций
General-Purpose Implementations - реализации общего назначения, наиболее

Определение коллекцийGeneral-Purpose Implementations - реализации общего назначения, наиболее часто используемые реализации,

часто используемые реализации,

HashSet, TreeSet, LinkedHashSet.
ArrayList , LinkedList.


HashMap, TreeMap, LinkedHashMap.
PriorityQueue

2011 © EPAM Systems, RD Dep.


Слайд 12 Определение коллекций
Special-Purpose Implementations - реализации специального назначения, разработаны

Определение коллекцийSpecial-Purpose Implementations - реализации специального назначения, разработаны для использования в

для использования в специальных ситуациях и предоставляют нестандартные характеристики

производительности, ограничения на использование или на поведение


EnumSet , CopyOnWriteArraySet.
CopyOnWriteArrayList
EnumMap, WeakHashMap, IdentityHashMap

2011 © EPAM Systems, RD Dep.


Слайд 13 Определение коллекций
Concurrent implementations – потоковые реализации

ConcurrentHashMap
LinkedBlockingQueue
ArrayBlockingQueue
PriorityBlockingQueue
DelayQueue
SynchronousQueue
LinkedTransferQueue

2011 ©

Определение коллекцийConcurrent implementations – потоковые реализацииConcurrentHashMapLinkedBlockingQueueArrayBlockingQueuePriorityBlockingQueueDelayQueueSynchronousQueueLinkedTransferQueue 2011 © EPAM Systems, RD Dep.

EPAM Systems, RD Dep.


Слайд 14 Определение коллекций
Wrapper implementations – реализация обертки, применяется для

Определение коллекцийWrapper implementations – реализация обертки, применяется для реализации нескольких типов

реализации нескольких типов в одном, чтобы обеспечить добавленную или

ограниченную функциональность, все они находятся в классе Collections.

public static Collection synchronizedCollection(Collection c); public static Set synchronizedSet(Set s); public static List synchronizedList(List list); public static Map synchronizedMap(Map m); public static SortedSet synchronizedSortedSet(SortedSet s); и др.
public static Collection unmodifiableCollection(Collection c); public static Set unmodifiableSet(Set s); public static List unmodifiableList(List list); public static Map unmodifiableMap(Map m); public static SortedSet unmodifiableSortedSet(SortedSet s); public static SortedMap unmodifiableSortedMap(SortedMap m);

2011 © EPAM Systems, RD Dep.


Слайд 15 Определение коллекций
Convenience implementations – удобные реализации, выполнены обычно

Определение коллекцийConvenience implementations – удобные реализации, выполнены обычно с использованием реализаций

с использованием реализаций общего назначения и применением static factory

methods для предоставления альтернативных путей создания (например, единичной коллекции)

Получить такие коллекции можно при помощи следующих методов

Arrays.asList
Collections.nCopies
Collections.singleton
emptySet, emptyList, emptyMap. (из Collections)

2011 © EPAM Systems, RD Dep.


Слайд 16 Определение коллекций
Abstract implementations – основа всех реализаций коллекций,

Определение коллекцийAbstract implementations – основа всех реализаций коллекций, которая облегчает создание

которая облегчает создание собственных коллекций.

AbstractCollection
AbstractSet
AbstractList
AbstractSequentialList
AbstractQueue
AbstractMap

2011 © EPAM

Systems, RD Dep.

Слайд 17 Определение коллекций
Алгоритмы (Algorithms)

Это методы, которые выполняют некоторые вычисления,

Определение коллекцийАлгоритмы (Algorithms)Это методы, которые выполняют некоторые вычисления, такие как поиск,

такие как поиск, сортировка объектов, реализующих интерфейс Сollection.

Они также

реализуют принцип полиморфизма, таким образом один и тот же метод может быть использован в различных реализациях Сollection интерфейса.

По существу, алгоритмы представляют универсальную функциональность.

2011 © EPAM Systems, RD Dep.


Слайд 18 ИНТЕРФЕЙС COLLECTION
2011 © EPAM Systems, RD Dep.

ИНТЕРФЕЙС COLLECTION2011 © EPAM Systems, RD Dep.

Слайд 19 Интерфейс Collection
Интерфейс Collection - вершина иерархии коллекций

Интерфейс Collection

Интерфейс CollectionИнтерфейс Collection - вершина иерархии коллекцийИнтерфейс Collection - наименьший набор

- наименьший набор характеристик, реализуемых всеми коллекциями

JDK не

предоставляет прямых реализаций этого интерфейса, но существует множество реализаций более специфичных подинтерфейсов таких как Set и List.

2011 © EPAM Systems, RD Dep.


Слайд 20 Интерфейс Collection
public interface Collection extends Iterable {

boolean equals(Object

Интерфейс Collectionpublic interface Collection extends Iterable {boolean equals(Object o);int size(); //возвращает

o);
int size(); //возвращает количество элементов в коллекции;
boolean isEmpty();

// возвращает true, если коллекция пуста;
boolean contains(Object element); //возвращает true, если коллекция содержит элемент element;
boolean add(E element); //добавляет element к вызывающей коллекции и возвращает true, если объект добавлен, и false, если element уже элемент коллекции;
boolean remove(Object element); //удаляет element из коллекции;
Iterator iterator(); //возвращает итератор


2011 © EPAM Systems, RD Dep.


Слайд 21 Интерфейс Collection
boolean containsAll(Collection c); //возвращает true, если коллекция

Интерфейс Collectionboolean containsAll(Collection c); //возвращает true, если коллекция содержит все элементы

содержит все элементы из c;
boolean addAll(Collection

c); //добавляет все элементы коллекции к вызывающей коллекции;
boolean removeAll(Collection c); //удаление всех элементов данной коллекции, которые содержаться в c;
boolean retainAll(Collection c); //удаление элементов данной коллекции, которые не содержаться в коллекции c;
void clear(); //удаление всех элементов.
Object[] toArray(); //копирует элементы коллекции в массив объектов
T[] toArray(T[] a); //возвращает массив, содержащий все элементы коллекции
}

2011 © EPAM Systems, RD Dep.


Слайд 22 Интерфейс Collection
interface Iterable{
Iterator iterator(); // возвращает итератор по

Интерфейс Collectioninterface Iterable{Iterator iterator(); // возвращает итератор по множеству элементов T}2011 © EPAM Systems, RD Dep.

множеству элементов T
}
2011 © EPAM Systems, RD Dep.


Слайд 23 Интерфейс Collection
Класс AbstractCollection - convenience class, предоставляет частичную

Интерфейс CollectionКласс AbstractCollection - convenience class, предоставляет частичную реализацию интерфейса Collection,

реализацию интерфейса Collection, реализует все методы, за исключением size()

и iterator().


2011 © EPAM Systems, RD Dep.


Слайд 24 Интерфейс Collection
Некоторые методы интерфейса Collection могут быть не

Интерфейс CollectionНекоторые методы интерфейса Collection могут быть не реализованы в подклассах

реализованы в подклассах (нет необходимости их реализовывать). В этом

случае метод генерирует java.lang.UnsupportedOperationException (подкласс RuntimeException)

Это хорошее решение, которое следует использовать.


2011 © EPAM Systems, RD Dep.

public void someMethod(){
throw new java.lang.UnsupportedOperationException();
}


Слайд 25 МНОЖЕСТВА SET
2011 © EPAM Systems, RD Dep.

МНОЖЕСТВА SET2011 © EPAM Systems, RD Dep.

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

Интерфейс Set

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

содержит методы, унаследованные Collection и добавляет запрет на дублирующиеся

элементы.

2011 © EPAM Systems, RD Dep.


Слайд 27 Множества Set
2011 © EPAM Systems, RD Dep.

Множества Set2011 © EPAM Systems, RD Dep.

Слайд 28 Множества Set
Интерфейс Set заботится об уникальности хранимых объектов,

Множества SetИнтерфейс Set заботится об уникальности хранимых объектов, уникальность определятся реализацией

уникальность определятся реализацией метода equals().
2011 © EPAM Systems, RD

Dep.

Слайд 29 Множества Set
public interface Set extends Collection {

int size();

Множества Setpublic interface Set extends Collection {int size(); //возвращает количество элементов

//возвращает количество элементов в множестве
boolean isEmpty(); //возвращает true,

если множество пусто;
boolean contains(Object element); //возвращает true, если множество содержит элемент element
boolean add(E element); //добавляет element к вызывающему множеству и возвращает true, если объект добавлен, и false, если element уже элемент множества
boolean remove(Object element); // удаляет element из множества
Iterator iterator(); // возвращает итератор по множеству

2011 © EPAM Systems, RD Dep.


Слайд 30 Множества Set
boolean containsAll(Collection c); // возвращает true, если

Множества Setboolean containsAll(Collection c); // возвращает true, если множество содержит все

множество содержит все элементы коллекции с
boolean addAll(Collection

c); //добавление всех элементов из коллекции c во множество, если их еще нет
boolean removeAll(Collection c); //удаляет из множества все элементы, входящие в коллекцию c
boolean retainAll(Collection c); //сохраняет элементы во множестве, которые также содержаться и в коллекции с
void clear(); //удаление всех элементов
Object[] toArray(); //копирует элементы множества в массив объектов
T[] toArray(T[] a); //возвращает массив, содержащий все элементы множества
}

2011 © EPAM Systems, RD Dep.


Слайд 31 Множества Set
Set также добавляет соглашение на поведение методов

Множества SetSet также добавляет соглашение на поведение методов equals и hashCode,

equals и hashCode, позволяющих сравнивать множества даже если их

реализации различны

Два множества считаются равными, если они содержат одинаковые элементы


2011 © EPAM Systems, RD Dep.


Слайд 32 Множества Set
Правила сравнения на равенство

Метод boolean equals(Object o)

Множества SetПравила сравнения на равенствоМетод boolean equals(Object o) Рефлексивность		o1.equals(o1) Симметричность		o1.equals(o2) == e2.equals(o1)

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

Устойчивость
o1.equals(o2) не изменяется, если o1 и o2 не изменяются
Обработка null
o1.equals(null) == false


2011 © EPAM Systems, RD Dep.


Слайд 33 Множества Set
Интерфейс SortedSet из пакета java.util, расширяющий интерфейс

Множества SetИнтерфейс SortedSet из пакета java.util, расширяющий интерфейс Set, описывает упорядоченное

Set, описывает упорядоченное множество, отсортированное по естественному порядку возрастания

его элементов или по порядку, заданному реализацией интерфейса Comparator.

2011 © EPAM Systems, RD Dep.


Слайд 34 Множества Set
public interface SortedSet extends Set{

Comparator

Множества Set public interface SortedSet extends Set{Comparator

E> comparator(); // возвращает способ упорядочения коллекции;
E first(); //

минимальный элемент
SortedSet headSet(E toElement); //подмножество элементов, меньших toElement
E last(); // максимальный элемент
SortedSet subSet(E fromElement, E toElement); // подмножество элементов, меньших toElement и больше либо равных fromElement
SortedSet tailSet(E fromElement); // подмножество элементов, больших либо равных fromElement
}

2011 © EPAM Systems, RD Dep.


Слайд 35 Множества Set
Интерфейс NavigableSet добавляет возможность перемещения, "навигации" по

Множества SetИнтерфейс NavigableSet добавляет возможность перемещения,

отсортированному множеству.
2011 © EPAM Systems, RD Dep.


Слайд 36 Множества Set
public interface NavigableSet extends SortedSet{

E lower(E e);

Множества Setpublic interface NavigableSet extends SortedSet{E lower(E e); E floor(E e);


E floor(E e);
E higher(E e);
E ceiling(E e);




E pollFirst();
E pollLast();


Iterator iterator();
Iterator descendingIterator();
NavigableSet descendingSet();


2011 © EPAM Systems, RD Dep.

// методы позволяют получить соответственно меньший, меньше или равный, больший, больше или равный элемент по отношению к заданному.

// метода возвращают соответственно первый и последний элементы, удаляя их из набора

// возвращают итерато-ры коллекции в порядке возрастания и убывания элементов соответст-венно.


Слайд 37 Множества Set
// методы, позволяющие получить подмножество элементов. Параметры

Множества Set// методы, позволяющие получить подмножество элементов. Параметры fromElement и toElement

fromElement и toElement ограничивают подмножество снизу и сверху, а

флаги fromInclusive и toInclusive показывают, нужно ли в результирующий набор включать граничные элементы. headSet возвращает элементы с начала набора до указанного элемента, а tailSet - от указанного элемента до конца набора. Перегруженные методы без логических параметров включают в выходной набор первый элемент интервала, но исключают последний.

SortedSet headSet(E toElement)
NavigableSet headSet(E toElement, boolean inclusive)
NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
SortedSet subSet(E fromElement, E toElement)
SortedSet tailSet(E fromElement)
NavigableSet tailSet(E fromElement, boolean inclusive)
}

2011 © EPAM Systems, RD Dep.


Слайд 38 Множества Set
Класс AbstractSet - convenience class , который

Множества SetКласс AbstractSet - convenience class , который наследуется от AbstractCollection

наследуется от AbstractCollection и реализует интерфейс Set.

Класс AbstractSet предоставляет

реализацию методов equals и hashCode;
hash-код множества – это сумма всех hash-кодов его элементов;
методы size и iterator не реализованы.

2011 © EPAM Systems, RD Dep.


Слайд 39 Множества Set
HashSet – неотсортированная и неупорядоченная коллекция, для

Множества SetHashSet – неотсортированная и неупорядоченная коллекция, для вставки элемента используются

вставки элемента используются методы hashCode() и equals(…).

Чем эффективней реализован

метод hashCode(), тем эффективней работает коллекция.

HashSet используется в случае, когда порядок элементов не важен, но важно чтобы в коллекции все элементы были уникальны.


2011 © EPAM Systems, RD Dep.


Слайд 40 Множества Set
Конструкторы HashSet

HashSet() ─ создает пустое множество;
HashSet(Collection

Множества SetКонструкторы HashSetHashSet() ─ создает пустое множество;HashSet(Collection

E> c) ─ создает новое множество с элементами коллекции c;
HashSet(int

initialCapacity) ─ создает новое пустое множество размера initialCapacity;
HashSet(int initialCapacity, float loadFactor) ─ создает новое пустое множество размера initialCapacity со степенью заполнения loadFactor.

Выбор слишком большой первоначальной вместимости (capacity) может обернуться потерей памяти и производительности.
Выбор слишком маленькой первоначальной вместимости (capacity) уменьшает производительность из-за копирования данных каждый раз, когда вместимость увеличивается.

2011 © EPAM Systems, RD Dep.


Слайд 41 Множества Set
Для эффективности объекты, добавляемые в множество должны

Множества SetДля эффективности объекты, добавляемые в множество должны реализовывать hashСode.Метод int

реализовывать hashСode.

Метод int hashCode() - возвращает значение хэш-кода множества

Правила:

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

Согласованность с equals()
o1.equals(o2) => o1.hashCode() == o2.hashCode()



2011 © EPAM Systems, RD Dep.


Слайд 42 Множества Set. Example 01
2011 © EPAM Systems, RD

Множества Set. Example 012011 © EPAM Systems, RD Dep.[San Francisco, New

Dep.
[San Francisco, New York, Paris, Berling, London]
San Francisco New

York Paris Berling London

package _java._se._06.set;
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set set = new HashSet();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Berling");
set.add("New York");
System.out.println(set);
for (Object element : set)
System.out.print(element.toString());
}
}

Результат:


Слайд 43 Множества Set
LinkedHashSet ─ множество на основе хэша c

Множества SetLinkedHashSet ─ множество на основе хэша c сохранением порядка обхода.2011 © EPAM Systems, RD Dep.

сохранением порядка обхода.



2011 © EPAM Systems, RD Dep.


Слайд 44 Множества Set. Example 02
Результат:
2011 © EPAM Systems, RD

Множества Set. Example 02Результат:2011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.LinkedHashSet;import

Dep.
package _java._se._06.set;
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetExample {
public static void

main(String[] args) {
Set set = new LinkedHashSet();
// Add strings to the set
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Berling");
set.add("New York");
System.out.println(set);
// Display the elements in the hash set
for (Object element : set)
System.out.print(element.toString() + " ");
}
}

[London, Paris, New York, San Francisco, Berling]
London Paris New York San Francisco Berling


Слайд 45 Множества Set
TreeSet – реализует интерфейс NavigableSet, который поддерживает

Множества SetTreeSet – реализует интерфейс NavigableSet, который поддерживает элементы в отсортированном

элементы в отсортированном по возрастанию порядке.

Для хранения объектов

использует бинарное дерево.

При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки.

Сортировка происходит благодаря тому, что все добавляемые элементы реализуют интерфейсы Comparator и Comparable.

Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках.

2011 © EPAM Systems, RD Dep.


Слайд 46 Множества Set
Используется в том случае, если необходимо использовать

Множества SetИспользуется в том случае, если необходимо использовать операции, определенные в

операции, определенные в интерфейсе SortedSet, NavigableSet или итерацию в

определенном порядке.

2011 © EPAM Systems, RD Dep.


Слайд 47 Множества Set
Конструкторы TreeSet:

TreeSet();
TreeSet(Collection

Множества SetКонструкторы TreeSet:TreeSet();TreeSet(Collection

super E> c);
TreeSet(SortedSet s);


2011 © EPAM Systems, RD

Dep.

Слайд 48 Множества Set
Класс TreeSet содержит методы по извлечению первого

Множества SetКласс TreeSet содержит методы по извлечению первого и последнего (наименьшего

и последнего (наименьшего и наибольшего) элементов E first() и

E last().

Методы SortedSet subSet(E from, E to), SortedSet tailSet(E from) и SortedSet headSet(E to) предназначены для извлечения определенной части множества.

Метод Comparator comparator() возвращает объект Comparator, используемый для сортировки объектов множества или null, если выполняется обычная сортировка.

2011 © EPAM Systems, RD Dep.


Слайд 49 Множества Set. Example 03
2011 © EPAM Systems, RD

Множества Set. Example 032011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.HashSet;import

Dep.
package _java._se._06.set;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class TreeSetExample {
public

static void main(String[] args) {
// Create a hash set
Set set = new HashSet();
// Add strings to the set
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Berling");
set.add("New York");
TreeSet treeSet = new TreeSet(set);
System.out.println(treeSet);
// Display the elements in the hash set
for (Object element : set)
System.out.print(element.toString() + " ");
}
}

Слайд 50 Множества Set. Example 03
Результат:
2011 © EPAM Systems, RD

Множества Set. Example 03Результат:2011 © EPAM Systems, RD Dep.[Berling, London, New

Dep.
[Berling, London, New York, Paris, San Francisco]
San Francisco New

York Paris Berling London

Слайд 51 ИНТЕРФЕЙС ITERATOR
2011 © EPAM Systems, RD Dep.

ИНТЕРФЕЙС ITERATOR2011 © EPAM Systems, RD Dep.

Слайд 52 Интерфейс Iterator
Для обхода коллекции можно использовать:

for-each
Конструкция for-each является

Интерфейс IteratorДля обхода коллекции можно использовать:for-eachКонструкция for-each является краткой формой записи

краткой формой записи обхода коллекции с использованием цикла for.




Iterator
Итератор

это объект, который позволяет осуществлять обход коллекции и при желании удалять избранные элементы.

2011 © EPAM Systems, RD Dep.

for (Object o: collection)
System.out.println(o);


Слайд 53 Интерфейс Iterator
Интерфейс Iterator используется для доступа к элементам

Интерфейс IteratorИнтерфейс Iterator используется для доступа к элементам коллекции Iterator iterator()

коллекции

Iterator iterator() – возвращает итератор

2011 © EPAM Systems,

RD Dep.

Слайд 54 Интерфейс Iterator
public interface Iterator {
boolean hasNext(); // возвращает

Интерфейс Iteratorpublic interface Iterator {boolean hasNext(); // возвращает true при наличии

true при наличии следующего элемента, а в случае его

отсутствия возвращает false. Итератор при этом остается неизменным;
Object next(); // возвращает объект, на который указывает итератор, и передвигает текущий указатель на следующий итератор, предоставляя доступ к следующему элементу. Если следующий элемент коллекции отсутствует, то метод next() генерирует исключение ;
void remove(); // удаляет объект, возвращенный последним вызовом метода next()
}

2011 © EPAM Systems, RD Dep.


Слайд 55 Интерфейс Iterator
Исключения:

NoSuchElementException ─ генерируется при достижении конца коллекции

ConcurrentModificationException

Интерфейс IteratorИсключения:NoSuchElementException ─ генерируется при достижении конца коллекцииConcurrentModificationException ─ генерируется при

─ генерируется при изменении коллекции

2011 © EPAM Systems, RD

Dep.

Слайд 56 Интерфейс Iterator. Example 04
2011 © EPAM Systems, RD

Интерфейс Iterator. Example 042011 © EPAM Systems, RD Dep.package _java._se._06.set;import java.util.HashSet;import

Dep.
package _java._se._06.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class IteratorExample {
public static

void main(String[] args) {
Set set = new HashSet();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Berling");
set.add("New York");
System.out.println(set);
// Obtain an iterator for the hash set
Iterator iterator = set.iterator();
// Display the elements in the hash set
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}

Слайд 57 Интерфейс Iterator. Example 04
Результат:
2011 © EPAM Systems, RD

Интерфейс Iterator. Example 04Результат:2011 © EPAM Systems, RD Dep.[San Francisco, New

Dep.
[San Francisco, New York, Paris, Berling, London]
San Francisco New

York Paris Berling London

Слайд 58 Интерфейс Iterator
Используйте Iterator вместо for-each если вам необходимо

Интерфейс IteratorИспользуйте Iterator вместо for-each если вам необходимо удалить текущий элемент.Конструкция

удалить текущий элемент.

Конструкция for-each скрывает итератор, поэтому нельзя вызвать

remove
Также конструкция for-each не применима для фильтрации.


2011 © EPAM Systems, RD Dep.

static void filter(Collection c) {
for (Iterator it = c.iterator(); it.hasNext();)
if (!cond(it.next()))
it.remove();
}


Слайд 59 Интерфейс Iterator
Чтобы удалить все экземпляры определенного элемента е

Интерфейс IteratorЧтобы удалить все экземпляры определенного элемента е из коллекции с

из коллекции с воспользуйтесь следующим кодом:



Удалить все элементы null

из коллекции



Collections.singleton(), статический метод, который возвращает постоянное множество, содержащее только определенный элемент.

2011 © EPAM Systems, RD Dep.

c.removeAll(Collections.singleton(e));

c.removeAll(Collections.singleton(null));


Слайд 60 СРАВНЕНИЕ ОБЪЕКТОВ. COMPATATOR, COMPARABLE
2011 © EPAM Systems, RD

СРАВНЕНИЕ ОБЪЕКТОВ. COMPATATOR, COMPARABLE2011 © EPAM Systems, RD Dep.

Dep.


Слайд 61 Сравнение коллекций. Comparator, Comparable
Естественный порядок сортировки (natural sort

Сравнение коллекций. Comparator, ComparableЕстественный порядок сортировки (natural sort order) — естественный

order) — естественный и реализованный по умолчанию (реализацией метода

compareTo интерфейса java.lang.Comparable) способ сравнения двух экземпляров одного класса.

int compareTo(E other) — сравнивает this объект с other и возвращает отрицательное значение если thisother.

2011 © EPAM Systems, RD Dep.


Слайд 62 Сравнение коллекций. Comparator, Comparable
Реализация Comparable позволяет:

Вызвать Collections.sort иCollections.binarySearch

Вызывать

Сравнение коллекций. Comparator, ComparableРеализация Comparable позволяет:Вызвать Collections.sort иCollections.binarySearchВызывать Arrays.sort и Arrays.binarySearchИспользовать

Arrays.sort и Arrays.binarySearch

Использовать такие объекты, как keys в TreeMap

Использовать

такие объекты, как elements вTreeSet

2011 © EPAM Systems, RD Dep.


Слайд 63 Сравнение коллекций. Comparator, Comparable
Метод compareTo должен выполнять следующие

Сравнение коллекций. Comparator, ComparableМетод compareTo должен выполнять следующие условия. sgn(x.compareTo(y)) ==

условия.

sgn(x.compareTo(y)) == -sgn(y.compareTo(x))

если x.compareTo(y) выбрасывает исключение, то и

y.compareTo(x) должен выбрасывать то же исключение

если x.compareTo(y)>0 и y.compareTo(z)>0, тогда x.compareTo(z)>0

если x.compareTo(y)==0, и x.compareTo(z)==0, то и y.compareTo(z)==0

x.compareTo(y)==0, тогда и только тогда, когда x.equals(y) ; (правило рекомендуемо но не обязательно)

2011 © EPAM Systems, RD Dep.


Слайд 64 Сравнение коллекций. Comparator, Comparable. Example 05
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparable;
public class Person implements Comparable {
private

String firstName;
private String lastName;
private int age;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}


Слайд 65 Сравнение коллекций. Comparator, Comparable. Example 05
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.public

Systems, RD Dep.
public int getAge() {
return age;
}
public void setAge(int

age) {
this.age = age;
}


public int compareTo(Object anotherPerson)
throws ClassCastException {
if (!(anotherPerson instanceof Person))
throw new ClassCastException(
"A Person object expected.");
int anotherPersonAge =
((Person) anotherPerson).getAge();
return this.age - anotherPersonAge;
}
}

Слайд 66 Сравнение коллекций. Comparator, Comparable. Example 05
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparable;
import java.util.Arrays;
public class Testing {
public static

void main(String[] args) {
Person[] persons = new Person[4];
persons[0] = new Person();
persons[0].setFirstName("Elvis");
persons[0].setLastName("Goodyear");
persons[0].setAge(56);
persons[1] = new Person();
persons[1].setFirstName("Stanley");
persons[1].setLastName("Clark");
persons[1].setAge(8);
persons[2] = new Person();
persons[2].setFirstName("Jane");
persons[2].setLastName("Graff");
persons[2].setAge(16);
persons[3] = new Person();
persons[3].setFirstName("Nancy");
persons[3].setLastName("Goodyear");
persons[3].setAge(69);


Слайд 67 Сравнение коллекций. Comparator, Comparable. Example 05
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 052011 © EPAM Systems, RD Dep.	System.out.println(

Systems, RD Dep.
System.out.println("Natural Order");
for (int i = 0; i

< 4; i++) {
Person person = persons[i];
String lastName = person.getLastName();
String firstName = person.getFirstName();
int age = person.getAge();
System.out.println(lastName + ", " + firstName + ". Age:" + age);
}
Arrays.sort(persons);
System.out.println();
System.out.println("Sorted by age");
for (int i = 0; i < 4; i++) {
Person person = persons[i];
String lastName = person.getLastName();
String firstName = person.getFirstName();
int age = person.getAge();
System.out.println(lastName + ", " + firstName + ". Age:" + age);
}
}
}

Слайд 68 Сравнение коллекций. Comparator, Comparable. Example 05
Результат:
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 05Результат:2011 © EPAM Systems, RD Dep.Natural

Systems, RD Dep.
Natural Order
Goodyear, Elvis. Age:56
Clark, Stanley. Age:8
Graff, Jane.

Age:16
Goodyear, Nancy. Age:69
Sorted by age
Clark, Stanley. Age:8
Graff, Jane. Age:16
Goodyear, Elvis. Age:56
Goodyear, Nancy. Age:69

Слайд 69 Сравнение коллекций. Comparator, Comparable
При реализации интерфейса Comparator существует

Сравнение коллекций. Comparator, ComparableПри реализации интерфейса Comparator существует возможность сортировки списка

возможность сортировки списка объектов конкретного типа по правилам, определенным

для этого типа.

Для этого необходимо реализовать метод int compare(T ob1, T ob2), принимающий в качестве параметров два объекта для которых должно быть определено возвращаемое целое значение, знак которого и определяет правило сортировки.

Этот метод автоматически вызывается методом public static void sort(List list, Comparator c) класса Collections, в качестве первого параметра принимающий коллекцию, в качестве второго – объект-comparator, из которого извлекается правило сортировки.

2011 © EPAM Systems, RD Dep.


Слайд 70 Сравнение коллекций. Comparator, Comparable
java.util.Comparator — содержит два метода:

int

Сравнение коллекций. Comparator, Comparablejava.util.Comparator — содержит два метода:int compare(T o1, T

compare(T o1, T o2) — сравнение, аналогичное compareTo

boolean equals(Object

obj) — true если оbj это Comparator и у него такой же принцип сравнения.

2011 © EPAM Systems, RD Dep.


Слайд 71 Сравнение коллекций. Comparator, Comparable. Example 06
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparator;
public abstract class GeometricObject {
public abstract

double getArea();
}

package _java._se._06.comparator;
public class Rectangle extends GeometricObject {
private double sideA;
private double sideB;
public Rectangle(double a, double b) {
sideA = a;
sideB = b;
}
@Override
public double getArea() {
return sideA * sideB;
}
}


Слайд 72 Сравнение коллекций. Comparator, Comparable. Example 06
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparator;
public class Circle extends GeometricObject {

private

double radius;

public Circle(double r){
radius = r;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return 2*3.14*radius*radius;
}
}

Слайд 73 Сравнение коллекций. Comparator, Comparable. Example 06
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparator;
import java.util.Comparator;
public class GeometricObjectComparator
implements Comparator,
java.io.Serializable

{
private static final long serialVersionUID = 1L;

public int compare(GeometricObject o1,
GeometricObject o2) {
double area1 = o1.getArea();
double area2 = o2.getArea();
if (area1 < area2) {
return -1;
} else if (area1 == area2) {
return 0;
} else {
return 1;
}
}
}

Слайд 74 Сравнение коллекций. Comparator, Comparable. Example 06
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 062011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.comparator;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
public class TestTreeSetWithComparator

{
public static void main(String[] args) {
Comparator comparator
= new GeometricObjectComparator();
Set set
= new TreeSet(comparator);
set.add(new Rectangle(4, 5));
set.add(new Circle(40));
set.add(new Circle(40));
set.add(new Rectangle(4, 1));
System.out.println("A sorted set of geometric objects");
for (GeometricObject elements : set) {
System.out.println("area = " + elements.getArea());
}
}
}

Слайд 75 Сравнение коллекций. Comparator, Comparable. Example 06
Результат:
2011 © EPAM

Сравнение коллекций. Comparator, Comparable. Example 06Результат:2011 © EPAM Systems, RD Dep.A

Systems, RD Dep.
A sorted set of geometric objects
area =

4.0
area = 20.0
area = 10048.0

Слайд 76 СПИСКИ LIST
2011 © EPAM Systems, RD Dep.

СПИСКИ LIST2011 © EPAM Systems, RD Dep.

Слайд 77 Списки List
Список - упорядоченная коллекция (иногда называется sequence)

Список

Списки ListСписок - упорядоченная коллекция (иногда называется sequence)Список может содержать повторяющиеся

может содержать повторяющиеся элементы.

Интерфейс List сохраняет последовательность добавления элементов

и позволяет осуществлять доступ к элементу по индексу.

2011 © EPAM Systems, RD Dep.


Слайд 78 Списки List
2011 © EPAM Systems, RD Dep.

Списки List2011 © EPAM Systems, RD Dep.

Слайд 79 Списки List
public interface List extends Collection {

E get(int

Списки Listpublic interface List extends Collection {E get(int index); //возвращает объект,

index); //возвращает объект, находящийся в позиции index;
E set(int index,

E element); //заменяет элемент, находящийся в позиции index объектом element;
boolean add(E element); //добавляет элемент в список
void add(int index, E element); //вставляет элемент element в позицию index, при этом список раздвигается
E remove(int index); //удаляет элемент, находящийся на позиции index
boolean addAll(int index, Collection c); //добавляет все элементы коллекции с в список, начиная с позиции index

2011 © EPAM Systems, RD Dep.


Слайд 80 Списки List
int indexOf(Object o); //возвращает индекс первого появления

Списки Listint indexOf(Object o); //возвращает индекс первого появления элемента o в

элемента o в списке;
int lastIndexOf(Object o); //возвращает индекс последнего

появления элемента o в списке;
ListIterator listIterator(); //возвращает итератор на список
ListIterator listIterator(int index); //возвращает итератор на список, установленный на элемент с индексом index
List subList(int from, int to); //возвращает новый список, представляющий собой часть данного (начиная с позиции from до позиции to-1 включительно).
}

2011 © EPAM Systems, RD Dep.


Слайд 81 Списки List
Класс AbstractList предоставляет частичную реализацию для интерфейса

Списки ListКласс AbstractList предоставляет частичную реализацию для интерфейса List.Класс AbstractSequentialList расширяет

List.

Класс AbstractSequentialList расширяет AbstractList, чтобы предоставить поддержку для связанных

списков.

2011 © EPAM Systems, RD Dep.


Слайд 82 Списки List
ListIterator - это итератор для списка


2011 ©

Списки ListListIterator - это итератор для списка2011 © EPAM Systems, RD Dep.

EPAM Systems, RD Dep.


Слайд 83 Списки List
interface ListIterator extends Iterator{

boolean hasNext() / boolean

Списки Listinterface ListIterator extends Iterator{boolean hasNext() / boolean hasPrevious() // проверкаE

hasPrevious() // проверка
E next() / E previous () //

взятие элемента
int nextIndex() / int previousIndex() // определение индекса
void remove() // удаление элемента
void set(E o) // изменение элемента
void add(E o) // добавление элемента

}


2011 © EPAM Systems, RD Dep.

List list = new LinkedList();

for (ListIterator li = list.listIterator(list.size()); li.hasPrevious(); ){
System.out.println(li.previous());
}


Слайд 84 Списки List
ArrayList ─ список на базе массива (реализация

Списки ListArrayList ─ список на базе массива (реализация List)ДостоинстваБыстрый доступ по

List)

Достоинства
Быстрый доступ по индексу
Быстрая вставка и удаление элементов с

конца
Недостатки
Медленная вставка и удаление элементов

Аналогичен Vector за исключением потокобезопасности

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


2011 © EPAM Systems, RD Dep.


Слайд 85 Списки List
Конструкторы ArrayList

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

Списки ListКонструкторы ArrayListArrayList() ─ пустой списокArrayList(Collection

─ копия коллекции
ArrayList(int initialCapacity) ─ пустой список заданной вместимости
Вместимость ─

реальное количество элементов

Дополнительные методы
void ensureCapacity(int minCapacity) ─ определение вместимости
void trimToSize() ─ “подгонка” вместимости

2011 © EPAM Systems, RD Dep.


Слайд 86 Списки List
LinkedList ─ двусвязный список (реализация List)

Достоинства
Быстрое

Списки ListLinkedList ─ двусвязный список (реализация List) ДостоинстваБыстрое добавление и удаление

добавление и удаление элементов
Недостатки
Медленный доступ по индексу

Рекомендуется использовать, если

необходимо часто добавлять элементы в начало списка или удалять внутренний элемент списка

Применения:
Стек
Очередь
Дек

2011 © EPAM Systems, RD Dep.


Слайд 87 Списки List
Конструкторы LinkedList

LinkedList () //пустой список
LinkedList(Collection

Списки ListКонструкторы LinkedListLinkedList () //пустой списокLinkedList(Collection

//копия коллекции

Дополнительные методы
void addFirst(E o) //добавить в начало списка
void addLast(E o)

// добавить в конец списка
E removeFirst() // удалить первый элемент
E removeLast() //удалить последний элемент
E getFirst()
E getLast()

2011 © EPAM Systems, RD Dep.


Слайд 88 Списки List. Example 07
2011 © EPAM Systems, RD

Списки List. Example 072011 © EPAM Systems, RD Dep.package _java._se._06.list;import java.util.ArrayList;import

Dep.
package _java._se._06.list;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
public class ListExample {

public static void main(String[] args) {
List arrayList = new ArrayList();
arrayList.add(1); // 1 is autoboxed to new Integer(1)
arrayList.add(2);
arrayList.add(3);
arrayList.add(1);
arrayList.add(4);
arrayList.add(0, 10);
arrayList.add(3, 30);
System.out.println(
"A list of integers in the array list:");
System.out.println(arrayList);



Слайд 89 Списки List. Example 07
2011 © EPAM Systems, RD

Списки List. Example 072011 © EPAM Systems, RD Dep.	LinkedList linkedList 			=

Dep.
LinkedList linkedList
= new LinkedList(arrayList);
linkedList.add(1, "red");
linkedList.removeLast();
linkedList.addFirst("green");
System.out.println("Display the linked list

forward:");

ListIterator listIterator = linkedList.listIterator();
while (listIterator.hasNext()) {
System.out.print(listIterator.next() + " ");
}
System.out.println();
System.out.println("Display the linked list backward:");
listIterator = linkedList.listIterator(linkedList.size());
while (listIterator.hasPrevious()) {
System.out.print(listIterator.previous() + " ");
}
}
}

Слайд 90 Списки List. Example 07
Результат:
2011 © EPAM Systems, RD

Списки List. Example 07Результат:2011 © EPAM Systems, RD Dep.A list of

Dep.
A list of integers in the array list:
[10, 1,

2, 30, 3, 1, 4]
Display the linked list forward:
green 10 red 1 2 30 3 1
Display the linked list backward:
1 3 30 2 1 red 10 green

Слайд 91 ОЧЕРЕДИ QUEUE
2011 © EPAM Systems, RD Dep.

ОЧЕРЕДИ QUEUE2011 © EPAM Systems, RD Dep.

Слайд 92 Очереди Queue
Очередь, предназначенная для размещения элемента перед его

Очереди QueueОчередь, предназначенная для размещения элемента перед его обработкой. Расширяет коллекцию

обработкой.

Расширяет коллекцию методами для вставки, выборки и просмотра

элементов

Очередь – хранилище элементов, предназначенных для обработки.


2011 © EPAM Systems, RD Dep.


Слайд 93 Очереди Queue
Кроме базовых методов Collection очередь(Queue) предоставляет дополнительные

Очереди QueueКроме базовых методов Collection очередь(Queue) предоставляет дополнительные методы по добавлению,

методы по добавлению, извлечению и проверке элементов.

Чаще всего порядок

выдачи элементов соответствует FIFO (first-in, first-out), но в общем случае определяется конкретной реализацией.

Очереди не могут хранить null.

У очереди может быть ограничен размер.

2011 © EPAM Systems, RD Dep.


Слайд 94 Очереди Queue
2011 © EPAM Systems, RD Dep.

Очереди Queue2011 © EPAM Systems, RD Dep.

Слайд 95 Очереди Queue
public interface Queue extends Collection {

E element(); //

Очереди Queuepublic interface Queue extends Collection {E	element(); // возвращает, но не

возвращает, но не удаляет головной элемент очереди
boolean offer(E o); //добавляет

в конец очереди новый элемент и возвращает true, если вставка удалась.
E peek(); // возвращает первый элемент очереди, не удаляя его.
E poll(); // возвращает первый элемент и удаляет его из очереди
E remove(); // возвращает и удаляет головной элемент очереди
}

2011 © EPAM Systems, RD Dep.


Слайд 96 Очереди Queue
Класс AbstractQueue – реализует методы интерфейса Queue:

Очереди QueueКласс AbstractQueue – реализует методы интерфейса Queue: size()offer(Object o)peek()poll()iterator()2011 © EPAM Systems, RD Dep.



size()
offer(Object o)
peek()
poll()
iterator()

2011 © EPAM Systems, RD Dep.


Слайд 97 Очереди Queue. Example 08
2011 © EPAM Systems, RD

Dep.
package _java._se._06.queue;
public class QueueExample {
public static void main(String[]

args) {
java.util.Queue queue
= new java.util.LinkedList();
queue.offer("Oklahoma");
queue.offer("Indiana");
queue.offer("Georgia");
queue.offer("Texas");
while (queue.size() > 0)
System.out.print(queue.remove() + " ");
}
}

Oklahoma Indiana Georgia Texas

Результат:


Слайд 98 Очереди Queue
Интерфейс Deque позволяет реализовать двунаправленная очередь, разрешающую

Очереди QueueИнтерфейс Deque позволяет реализовать двунаправленная очередь, разрешающую вставку и удаление

вставку и удаление элементов в два конца очереди.

Интерфейс Deque

определяет «двунаправленную» очередь и, соответственно, методы доступа к первому и последнему элементам двусторонней очереди.

Методы обеспечивают удаление, вставку и обработку элементов. Каждый из этих методов существует в двух формах.

Одни методы создают исключительную ситуацию в случае неудачного завершения, другие возвращают какое-либо из значений (null или false в зависимости от типа операции).


2011 © EPAM Systems, RD Dep.


Слайд 99 Очереди Queue
Вторая форма добавления элементов в очередь сделана

Очереди QueueВторая форма добавления элементов в очередь сделана специально для реализаций

специально для реализаций Deque, имеющих ограничение по размеру.

Методы

addFirst(e), addLast(e) вставляют элементы в начало и в конец очереди соответственно.

Метод add(e) унаследован от интерфейса Queue и абсолютно аналогичен методу addLast(e) интерфейса Deque.



2011 © EPAM Systems, RD Dep.


Слайд 100 Очереди Queue
ArrayDeque - эффективная реализация интерфейса Deque переменного

Очереди QueueArrayDeque - эффективная реализация интерфейса Deque переменного размераКонструкторы:ArrayDeque(); // создает

размера

Конструкторы:
ArrayDeque(); // создает пустую двунаправленную очередь с вместимостью 16

элементов
ArrayDeque(Collection c); // создает двунаправленную очередь из элементов коллекции c в том порядке, в котором они возвращаются итератором коллекции c.
ArrayDeque(int numElements); // создает пустую двунаправленную очередь с вместимостью numElements.


2011 © EPAM Systems, RD Dep.


Слайд 101 Очереди Queue. Example 09
Результат:
2011 © EPAM Systems, RD

Dep.
package _java._se._06.queue;
public class DequeExample {
public static void main(String[]

args) {
java.util.Deque deque
= new java.util.LinkedList();
deque.offer("Oklahoma");
deque.offer("Indiana");
deque.addFirst("Texas");
deque.offer("Georgia");
while (deque.size() > 0)
System.out.print(deque.remove() + " ");
}
}

Texas Oklahoma Indiana Georgia


Слайд 102 Очереди Queue. Example 10
2011 © EPAM Systems, RD

Очереди Queue. Example 102011 © EPAM Systems, RD Dep.package _java._se._06.queue;import java.util.ArrayDeque;import

Dep.
package _java._se._06.queue;
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeExample {
public static void

main(String args[]) {
Deque stack = new ArrayDeque();
Deque queue = new ArrayDeque();
stack.push("A");
stack.push("B");
stack.push("C");
stack.push("D");
while (!stack.isEmpty())
System.out.print(stack.pop() + " ");
queue.add("A");
queue.add("B");
queue.add("C");
queue.add("D");
while (!queue.isEmpty())
System.out.print(queue.remove() + " ");
}
}

Слайд 103 Очереди Queue. Example 10
2011 © EPAM Systems, RD

Очереди Queue. Example 102011 © EPAM Systems, RD Dep.D C B A A B C DРезультат:

Dep.
D C B A A B C D
Результат:


Слайд 104 Очереди Queue
PriorityQueue – это класс очереди с приоритетами.

Очереди QueuePriorityQueue – это класс очереди с приоритетами. По умолчанию очередь

По умолчанию очередь с приоритетами размещает элементы согласно естественному

порядку сортировки используя Comparable. Элементу с наименьшим значением присваивается наибольший приоритет. Если несколько элементов имеют одинаковый наивысший элемент – связь определяется произвольно.

Также можно указать специальный порядок размещения, используя Comparator




2011 © EPAM Systems, RD Dep.


Слайд 105 Очереди Queue
Конструкторы PriorityQueue:

PriorityQueue(); // создает очередь с приоритетами

Очереди QueueКонструкторы PriorityQueue:PriorityQueue(); // создает очередь с приоритетами начальной емкостью 11,

начальной емкостью 11, размещающую элементы согласно естественному порядку сортировки

(Comparable).
PriorityQueue(Collection c);
PriorityQueue(int initialCapacity);
PriorityQueue(int initialCapacity, Comparator comparator);
PriorityQueue(PriorityQueue c);
PriorityQueue(SortedSet c);

2011 © EPAM Systems, RD Dep.


Слайд 106 Очереди Queue. Example 11
2011 © EPAM Systems, RD

Dep.
package _java._se._06.queue;
import java.util.Collections;
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static

void main(String[] args) {

PriorityQueue queue1
= new PriorityQueue();
queue1.offer("Oklahoma");
queue1.offer("Indiana");
queue1.offer("Georgia");
queue1.offer("Texas");
System.out.println("Priority queue using Comparable:");
while (queue1.size() > 0) {
System.out.print(queue1.remove() + " ");
}


Слайд 107 Очереди Queue. Example 11
2011 © EPAM Systems, RD

Dep.
PriorityQueue queue2
= new PriorityQueue(4,
Collections.reverseOrder());
queue2.offer("Oklahoma");
queue2.offer("Indiana");
queue2.offer("Georgia");
queue2.offer("Texas");
System.out.println("\nPriority queue using Comparator:");
while (queue2.size()

> 0) {
System.out.print(queue2.remove() + " ");
}
}
}


Слайд 108 Очереди Queue. Example 11
Результат:
2011 © EPAM Systems, RD

Очереди Queue. Example 11Результат:2011 © EPAM Systems, RD Dep.Priority queue using

Dep.
Priority queue using Comparable:
Georgia Indiana Oklahoma Texas
Priority queue

using Comparator:
Texas Oklahoma Indiana Georgia

Слайд 109 КАРТЫ ОТОБРАЖЕНИЙ MAP
2011 © EPAM Systems, RD Dep.

КАРТЫ ОТОБРАЖЕНИЙ MAP2011 © EPAM Systems, RD Dep.

Слайд 110 Карты отображений Map
Интерфейс Map работает с наборами пар

Карты отображений MapИнтерфейс Map работает с наборами пар объектов «ключ-значение» Все

объектов «ключ-значение»

Все ключи в картах уникальны.

Уникальность ключей определяет

реализация метода equals(…).

Для корректной работы с картами необходимо переопределить методы equals(…) и hashCode(), допускается добавление объектов без переопределения этих методов, но найти эти объекты в Map вы не сможете.

2011 © EPAM Systems, RD Dep.


Слайд 111 Карты отображений Map
2011 © EPAM Systems, RD Dep.

Карты отображений Map2011 © EPAM Systems, RD Dep.

Слайд 112 Карты отображений Map
public interface Map {

V put(K key,

Карты отображений Mappublic interface Map {V put(K key, V value); //

V value); // запись
V get(Object key); // получение значение
V

remove(Object key); // удаление
boolean containsKey(Object key); // наличие ключа
boolean containsValue(Object value); // наличие значения
int size(); // размер отображения
boolean isEmpty(); // проверка на пустоту
void putAll(Map m); // добавление всех пар
void clear(); // полная очистка
public Set keySet(); // множество ключей
public Collection values(); // коллекция значений
public Set> entrySet(); // множество пар
}

2011 © EPAM Systems, RD Dep.


Слайд 113 Карты отображений Map
public static interface Map.Entry {

boolean equals(Object

Карты отображений Mappublic static interface Map.Entry {boolean equals(Object o); // сравнивает

o); // сравнивает объект о с сущностью this на

равенство
K getKey(); // возвращает ключ карты отображения
V getValue(); // возвращает значение карты отображения
int hashCode(); // возвращает hash-код для карты отображения
V setValue(V value); // устанавливает значение для карты отображения
}

2011 © EPAM Systems, RD Dep.


Слайд 114 Карты отображений Map
public interface SortedMap extends Map{

Comparator

Карты отображений Mappublic interface SortedMap extends Map{Comparator

K> comparator(); // возвращает компаратор, используемый для упорядочивания ключей

иди null, если используется естественный порядок сортировки
Set> entrySet(); // возвращает множество пар
K firstKey(); // минимальный ключ
SortedMap headMap(K toKey); // отображение ключей меньших toKey
Set keySet(); // возвращает множество ключей
K lastKey(); // максимальный ключ
SortedMap subMap(K fromKey, K toKey); // отображение ключей меньших toKey и больше либо равных fromKey
SortedMap tailMap(K fromKey); // отображение ключей больших либо равных fromKey
Collection values(); // возвращает коллекцию всех значений
}

2011 © EPAM Systems, RD Dep.


Слайд 115 Карты отображений Map
2011 © EPAM Systems, RD Dep.
public

Карты отображений Map2011 © EPAM Systems, RD Dep.public interface NavigableMap extends

interface NavigableMap extends SortedMap{

// Методы данного интерфейса соответствуют

методам NavigableSet, но позволяют, кроме того, получать как ключи карты отдельно, так и пары "ключ-значение"

Map.Entry lowerEntry(K key);
Map.Entry floorEntry(K key);
Map.Entry higherEntry(K key);
Map.Entry ceilingEntry(K key);
K lowerKey(K key);
K floorKey(K key);
K higherKey(K key);
K ceilingKey(K key);

// методы позво-ляют получить со-ответственно мень-ший, меньше или равный, больший, больше или рав-ный элемент по отношению к за-данному.


Слайд 116 Карты отображений Map
2011 © EPAM Systems, RD Dep.

Карты отображений Map2011 © EPAM Systems, RD Dep. // Методы pollFirstEntry

// Методы pollFirstEntry и pollLastEntry возвращают соответственно первый и

последний элементы карты, удаляя их из коллекции. Методы firstEntry и lastEntry также возвращают соответствующие элементы, но без удаления.

Map.Entry pollFirstEntry();
Map.Entry pollLastEntry();
Map.Entry firstEntry();
Map.Entry lastEntry();

// Метод descendingMap возвращает карту, отсортированную в обратном порядке:

NavigableMap descendingMap();



Слайд 117 Карты отображений Map
2011 © EPAM Systems, RD Dep.
//

Карты отображений Map2011 © EPAM Systems, RD Dep.// Методы, позволяющие получить

Методы, позволяющие получить набор ключей, отсортированных в прямом и

обратном порядке соответственно:

NavigableSet navigableKeySet();
NavigableSet descendingKeySet();



Слайд 118 Карты отображений Map
2011 © EPAM Systems, RD Dep.
//

Карты отображений Map2011 © EPAM Systems, RD Dep.// Методы, позволяющие извлечь

Методы, позволяющие извлечь из карты подмножество. Параметры fromKey и

toKey ограничивают подмножество снизу и сверху, а флаги fromInclusive и toInclusive показывают, нужно ли в результирующий набор включать граничные элементы. headMap возвращает элементы с начала набора до указанного элемента, а tailMap - от указанного элемента до конца набора. Перегруженные методы без логических параметров включают в выходной набор первый элемент интервала, но исключают последний.

NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive);
NavigableMap headMap(K toKey, boolean inclusive);
NavigableMap tailMap(K fromKey, boolean inclusive);
SortedMap subMap(K fromKey, K toKey);
SortedMap headMap(K toKey);
SortedMap tailMap(K fromKey);
}

Слайд 119 Карты отображений Map
HashMap – неотсортированная и неупорядоченная карта,

Карты отображений MapHashMap – неотсортированная и неупорядоченная карта, эффективность работы HashMap

эффективность работы HashMap зависит от того, насколько эффективно реализован

метод hashCode().

HashMap может принимать в качестве ключа null, но такой ключ может быть только один, значений null может быть сколько угодно.

2011 © EPAM Systems, RD Dep.

HashMap hashMap =
new HashMap();

hashMap.put("key", "Value for key");
System.out.println(hashMap .get("key"));


Слайд 120 Карты отображений Map
LinkedHashMap –хранит элементы в порядке вставки.

LinkedHashMap

Карты отображений MapLinkedHashMap –хранит элементы в порядке вставки.LinkedHashMap добавляет и удаляет

добавляет и удаляет объекты медленнее чем HashMap, но перебор

элементов происходит быстрее.

2011 © EPAM Systems, RD Dep.


Слайд 121 Карты отображений Map
TreeMap –хранит элементы в порядке сортировки.

По

Карты отображений MapTreeMap –хранит элементы в порядке сортировки.По умолчанию TreeMap сортирует

умолчанию TreeMap сортирует элементы по возрастанию от первого к

последнему, также порядок сортировки может задаваться реализацией интерфейсов Comparator и Comparable.

Реализация Comparator передается в конструктор TreeMap, Comparable используется при добавлении элемента в карту.

2011 © EPAM Systems, RD Dep.


Слайд 122 Карты отображений Map. Example 12
2011 © EPAM Systems,

Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.package _java._se._06.map;import

RD Dep.
package _java._se._06.map;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class MapExample

{
public static void main(String[] args) {

Map hashMap
= new HashMap();

hashMap.put("Smith", 30);
hashMap.put("Anderson", 31);
hashMap.put("Lewis", 29);
hashMap.put("Cook", 29);
System.out.println("Display entries in HashMap");
System.out.println(hashMap);


Слайд 123 Карты отображений Map. Example 12
2011 © EPAM Systems,

Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.		Map treeMap

RD Dep.
Map treeMap = new TreeMap(hashMap);
System.out.println("\nDisplay entries

in ascending order of key");
System.out.println(treeMap);
Map linkedHashMap = new LinkedHashMap(
16, 0.75f, true);
linkedHashMap.put("Smith", 30);
linkedHashMap.put("Anderson", 31);
linkedHashMap.put("Lewis", 29);
linkedHashMap.put("Cook", 29);
System.out.println("\nThe age for " + "Lewis is "
+ linkedHashMap.get("Lewis").intValue());
System.out.println(linkedHashMap);
}
}

Слайд 124 Карты отображений Map. Example 12
2011 © EPAM Systems,

Карты отображений Map. Example 122011 © EPAM Systems, RD Dep.Display entries

RD Dep.
Display entries in HashMap
{Smith=30, Lewis=29, Anderson=31, Cook=29}

Display entries

in ascending order of key
{Anderson=31, Cook=29, Lewis=29, Smith=30}

The age for Lewis is 29
{Smith=30, Anderson=31, Cook=29, Lewis=29}

Результат:


Слайд 125 Карты отображений Map. Example 13
2011 © EPAM

Карты отображений Map. Example 13 2011 © EPAM Systems, RD Dep.package

Systems, RD Dep.
package _java._se._06.map;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public class MapEntryExample

{
public static void main(String[] a) {
Properties props = System.getProperties();
Iterator iter = props.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
System.out.println(entry.getKey() + " -- " + entry.getValue());
}
}
}

Слайд 126 Карты отображений Map. Example 13
2011 © EPAM

Карты отображений Map. Example 13 2011 © EPAM Systems, RD Dep.java.runtime.name

Systems, RD Dep.
java.runtime.name -- Java(TM) SE Runtime Environment
sun.boot.library.path --

C:\Program Files\Java\jre6\bin
java.vm.version -- 20.2-b06
java.vm.vendor -- Sun Microsystems Inc.
java.vendor.url -- http://java.sun.com/
path.separator -- ;
java.vm.name -- Java HotSpot(TM) Client VM
file.encoding.pkg -- sun.io
sun.java.launcher -- SUN_STANDARD
user.country -- RU
sun.os.patch.level -- Dodatek Service Pack 3
java.vm.specification.name -- Java Virtual Machine Specification
user.dir -- F:\ws\Java_SE_06
java.runtime.version -- 1.6.0_27-b07
java.awt.graphicsenv -- sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs -- C:\Program Files\Java\jre6\lib\endorsed
os.arch -- x86

Результат:


Слайд 127 КЛАСС COLLECTIONS
2011 © EPAM Systems, RD Dep.

КЛАСС COLLECTIONS2011 © EPAM Systems, RD Dep.

Слайд 128 Класс Collections
Collections — класс, состоящий из статических методов,

Класс CollectionsCollections — класс, состоящий из статических методов, осуществляющих различные служебные

осуществляющих различные служебные операции над коллекциями.


2011 © EPAM Systems,

RD Dep.

Слайд 129 Класс Collections
2011 © EPAM Systems, RD Dep.

Класс Collections2011 © EPAM Systems, RD Dep.

Слайд 130 Класс Collections
2011 © EPAM Systems, RD Dep.

Класс Collections2011 © EPAM Systems, RD Dep.

Слайд 131 Класс Collections
2011 © EPAM Systems, RD Dep.
.

Класс Collections2011 © EPAM Systems, RD Dep..

Слайд 132 Класс Collections. Example 14
2011 © EPAM Systems, RD

Класс Collections. Example 142011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CollectionsExample1 {
public

static void main(String[] args) {
List list1
= Arrays.asList("red", "greean", "blue");
Collections.sort(list1);
System.out.println(list1);
List list2
= Arrays.asList("greean", "red", "yellow", "blue");
Collections.sort(list2, Collections.reverseOrder());
System.out.println(list2);
}
}

[blue, greean, red]
[yellow, red, greean, blue]

Результат:


Слайд 133 Класс Collections. Example 15
2011 © EPAM Systems, RD

Класс Collections. Example 152011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class CollectionsExample2 {

public static void main(String[] args) {
List list1
= Arrays.asList("yellow", "red", "green", "blue");
Collections.reverse(list1);
System.out.println(list1);
List list2
= Arrays.asList("yellow", "red", "green", "blue");
Collections.shuffle(list2);
System.out.println(list2);
}
}

[blue, green, red, yellow]
[yellow, blue, green, red]

Результат:


Слайд 134 Класс Collections. Example 16
2011 © EPAM Systems, RD

Класс Collections. Example 162011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class CollectionsExample3 {

public static void main(String[] args) {
List list3
= Arrays.asList("yellow", "red", "green", "blue");
List list4
= Arrays.asList("yellow", "red", "green", "blue");
Collections.shuffle(list3, new Random(20));
Collections.shuffle(list4, new Random(30));
System.out.println(list3);
System.out.println(list4);
}
}

[blue, yellow, red, green]
[red, blue, yellow, green]

Результат:


Слайд 135 Класс Collections. Example 17
2011 © EPAM Systems, RD

Класс Collections. Example 172011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
public class CollectionsExample4 {

public static void main(String[] args) {
List list1
= Arrays.asList("yellow","red","green","blue");
List list2 = Arrays.asList("white","black");
Collections.copy(list1, list2);
System.out.println(list1);
List list3
= Collections.nCopies(5,
new GregorianCalendar(2005,0,1));
}
}

[white, black, green, blue]

Результат:


Слайд 136 Класс Collections. Example 18
2011 © EPAM Systems, RD

Класс Collections. Example 182011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CollectionsExample5 {
public

static void main(String[] args) {
List list3 = Arrays
.asList(2, 4, 7, 10, 11, 45, 50, 59, 60, 66);
System.out.println("(1) Index: "
+ Collections.binarySearch(list3, 7));
System.out.println("(2) Index: "
+ Collections.binarySearch(list3, 9));
List list4 = Arrays.asList("blue", "green", "red");
System.out.println("(3) Index: „
+ Collections.binarySearch(list4, "red"));
System.out.println("(4) Index: „
+ Collections.binarySearch(list4, "cyan"));
}
}

(1) Index: 2
(2) Index: -4
(3) Index: 2
(4) Index: -2

Результат:


Слайд 137 Класс Collections. Example 19
2011 © EPAM Systems, RD

Класс Collections. Example 192011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CollectionsExample6 {
public

static void main(String[] args) {
List list = Arrays.asList("red", "green", "blue");
Collections.fill(list, "black");
System.out.println(list);
}
}

[black, black, black]

Результат:


Слайд 138 Класс Collections. Example 20
2011 © EPAM Systems, RD

Класс Collections. Example 202011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
public class CollectionsExample7 {
public

static void main(String[] args) {
Collection collection
= Arrays.asList("red", "green", "blue");
System.out.println(Collections.max(collection));
System.out.println(Collections.min(collection));
}
}

[black, black, black]

Результат:


Слайд 139 Класс Collections. Example 21
2011 © EPAM Systems, RD

Класс Collections. Example 212011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
public class CollectionsExample8 {
public

static void main(String[] args) {
Collection collection1
= Arrays.asList("red","cyan");
Collection collection2
= Arrays.asList("red","blue");
Collection collection3
= Arrays.asList("pink","tan");
System.out.println(
Collections.disjoint(collection1, collection2));
System.out.println(
Collections.disjoint(collection1, collection3));
}
}

false
true

Результат:


Слайд 140 Класс Collections. Example 22
2011 © EPAM Systems, RD

Класс Collections. Example 222011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.Arrays;import

Dep.
package _java._se._06.collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
public class CollectionsExample9 {
public

static void main(String[] args) {
Collection collection
= Arrays.asList("red","cyan","red");
System.out.println(
Collections.frequency(collection, "red"));
}
}

2

Результат:


Слайд 141 Класс Collections. Example 23
2011 © EPAM Systems, RD

Класс Collections. Example 232011 © EPAM Systems, RD Dep.package _java._se._06.collections;import java.util.ArrayList;import

Dep.
package _java._se._06.collections;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CollectionsExample10 {

public static void main(String[] args) {
String init[]
= { "One“,"Two“,"Three“,"One", "Two", "Three" };
List list1 = new ArrayList(Arrays.asList(init));
List list2 = new ArrayList(Arrays.asList(init));
list1.remove("One");
System.out.println(list1);
list2.removeAll(Collections.singleton("One"));
System.out.println(list2);
}
}

[Two, Three, One, Two, Three]
[Two, Three, Two, Three]

Результат:


Слайд 142 УНАСЛЕДОВАННЫЕ КОЛЛЕКЦИИ
2011 © EPAM Systems, RD Dep.

УНАСЛЕДОВАННЫЕ КОЛЛЕКЦИИ2011 © EPAM Systems, RD Dep.

Слайд 143 Унаследованные коллекции
Унаследованные коллекции (Legacy Collections) – это коллекции

Унаследованные коллекцииУнаследованные коллекции (Legacy Collections) – это коллекции языка Java 1.0/1.1В

языка Java 1.0/1.1

В ряде распределенных приложений, например с использованием

сервлетов, до сих пор применяются унаследованные коллекции, более медленные в обработке, но при этом потокобезопасные, существовавшие в языке Java с момента его создания.

2011 © EPAM Systems, RD Dep.


Слайд 144 Унаследованные коллекции
2011 © EPAM Systems, RD Dep.

Унаследованные коллекции2011 © EPAM Systems, RD Dep.

Слайд 145 Унаследованные коллекции
Vector –устаревшая версия ArrayList, его функциональность схожа

Унаследованные коллекцииVector –устаревшая версия ArrayList, его функциональность схожа с ArrayList за

с ArrayList за исключением того, что ключевые методы Vector

синхронизированы для безопасной работы с многопоточностью. Из-за того что методы Vector синхронизированы, Vector работает медленее чем ArrayList.

Конструкторы класса Vector

Vector()
Vector(Collection c).
Vector(int initialCapacity)          
Vector(int initialCapacity, int capacityIncrement)           

2011 © EPAM Systems, RD Dep.


Слайд 146 Унаследованные коллекции. Example 24
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Enumeration;import

Dep.
package _java._se._06.legacy;
import java.util.Enumeration;
import java.util.Vector;
public class VectorExample {
public static void

main(String args[]) {
// initial size is 3, increment is 2
Vector v = new Vector(3, 2);
System.out.println("Initial size: " + v.size());
System.out.println("Initial capacity: “
+ v.capacity());
v.addElement(new Integer(1));
v.addElement(new Integer(2));
v.addElement(new Integer(3));
v.addElement(new Integer(4));
System.out.println("Capacity after four additions: “
+ v.capacity());
v.addElement(new Double(5.45));
System.out.println("Current capacity: "
+ v.capacity());


Слайд 147 Унаследованные коллекции. Example 24
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.		v.addElement(new Double(6.08));		v.addElement(new Integer(7));		System.out.println(

Dep.
v.addElement(new Double(6.08));
v.addElement(new Integer(7));
System.out.println("Current capacity: "
+ v.capacity());
v.addElement(new Float(9.4));
v.addElement(new Integer(10));
System.out.println("Current

capacity: "
+ v.capacity());
v.addElement(new Integer(11));
v.addElement(new Integer(12));
System.out.println("First element: "
+ (Integer) v.firstElement());
System.out.println("Last element: "
+ (Integer) v.lastElement());
if (v.contains(new Integer(3)))
System.out.println("Vector contains 3.");


Слайд 148 Унаследованные коллекции. Example 24
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 242011 © EPAM Systems, RD Dep.	 // enumerate

Dep.
// enumerate the elements in the vector.

Enumeration vEnum = v.elements();
System.out.println("\nElements in vector:");
while (vEnum.hasMoreElements())
System.out.print(vEnum.nextElement() + " ");
System.out.println();
}
}

Результат:

Initial size: 0
Initial capacity: 3
Capacity after four additions: 5
Current capacity: 5
Current capacity: 7
Current capacity: 9
First element: 1
Last element: 12
Vector contains 3.
Elements in vector:
1 2 3 4 5.45 6.08 7 9.4 10 11 12


Слайд 149
Enumeration – объекты классов, реализующих данный интерфейс, используются

Enumeration – объекты классов, реализующих данный интерфейс, используются для предоставления однопроходного

для предоставления однопроходного последовательного доступа к серии объектов:





public

interface Enumeration{
boolean hasMoreElements();
E nextElement() ;
}




2011 © EPAM Systems, RD Dep.

Hashtable t = ...;

for (Enumeration e = t.keys(); e.hasMoreElements();) {
String s = e.nextElement();
}


Слайд 150 Унаследованные коллекции
Класс Stack позволяет создавать очередь типа last-in-first-out

Унаследованные коллекцииКласс Stack позволяет создавать очередь типа last-in-first-out (LIFO)public class Stack

(LIFO)

public class Stack extends Vector {
public boolean empty();
public synchronized

E peek();
public synchronized E pop();
public E push(E object);
public synchronized int search(Object o);
}

2011 © EPAM Systems, RD Dep.


Слайд 151 Унаследованные коллекции. Example 25
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 252011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Stack;import

Dep.
package _java._se._06.legacy;
import java.util.Stack;
import java.util.StringTokenizer;
public class StackExample {
static boolean checkParity(String

expression,
String open, String close) {
Stack stack = new Stack();
StringTokenizer st
= new StringTokenizer(expression, " \t\n\r+*/-(){}", true);
while (st.hasMoreTokens()) {
String tmp = st.nextToken();
if (tmp.equals(open))
stack.push(open);
if (tmp.equals(close))
stack.pop();
}
if (stack.isEmpty()) return true;
else return false;
}
public static void main(String[] args) {
System.out.println(
checkParity("a - (b - (c - a) / (b + c) - 2)", "(", ")"));
}
}

Слайд 152 Унаследованные коллекции
Hashtable – после модификации в JDK 1.2

Унаследованные коллекцииHashtable – после модификации в JDK 1.2 реализует интерфейс Map.

реализует интерфейс Map. Порядок следования пар ключ/значение не определен.

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

Hashtable

Hashtable() ;
Hashtable(int initialCapacity) ;
Hashtable(int initialCapacity, float loadFactor) ;
Hashtable(Map t);           

2011 © EPAM Systems, RD Dep.


Слайд 153 Унаследованные коллекции. Example 26
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 262011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Collection;import

Dep.
package _java._se._06.legacy;

import java.util.Collection;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;

public class HashtableExample {
public

static void main(String[] args) {
Hashtable ht
= new Hashtable();
ht.put("1", "One");
ht.put("2", "Two");
ht.put("3", "Three");
Collection c = ht.values();
Iterator itr = c.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}


Слайд 154 Унаследованные коллекции. Example 26
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 262011 © EPAM Systems, RD Dep.		c.remove(

Dep.
c.remove("One");
Enumeration e = ht.elements();
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}
}
}
Результат:
Three
Two
One
Three
Two


Слайд 155 Унаследованные коллекции
Класс Properties предназначен для хранения набора свойств

Унаследованные коллекцииКласс Properties предназначен для хранения набора свойств (параметров).МетодыString getProperty(String key)String

(параметров).

Методы
String getProperty(String key)
String getProperty(String key,String defaultValue)
позволяют получить свойство из

набора.

С помощью метода
setProperty(String key, String value)
это свойство можно установить.

2011 © EPAM Systems, RD Dep.


Слайд 156 Унаследованные коллекции
Метод
load(InputStream inStream)
позволяет загрузить набор свойств

Унаследованные коллекцииМетод load(InputStream inStream) позволяет загрузить набор свойств из входного потока.Параметры

из входного потока.

Параметры представляют собой строки представляющие сбой пары

ключ/значение.

Предполагается, что по умолчанию используется кодировка ISO 8859-1.

2011 © EPAM Systems, RD Dep.


Слайд 157 Унаследованные коллекции. Example 27
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.Iterator;import

Dep.
package _java._se._06.legacy;

import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

public class PropertiesExample {
public static

void main(String[] args) {
Properties capitals = new Properties();
Set states;
String str;
capitals.put("Illinois", "Springfield");
capitals.put("Missouri", "Jefferson City");
capitals.put("Washington", "Olympia");
capitals.put("California", "Sacramento");
capitals.put("Indiana", "Indianapolis");


Слайд 158 Унаследованные коллекции. Example 27
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.	 // Show

Dep.
// Show all states and capitals in

hashtable.
states = capitals.keySet(); // get set-view of keys
Iterator itr = states.iterator();
while (itr.hasNext()) {
str = (String) itr.next();
System.out.println("The capital of “
+ str + " is "
+ capitals.getProperty(str) + ".");
}
System.out.println();
// look for state not in list — specify default
str = capitals.getProperty("Florida", "Not Found");
System.out.println("The capital of Florida is “
+ str + ".");
}
}

Слайд 159 Унаследованные коллекции. Example 27
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 272011 © EPAM Systems, RD Dep.Результат:The capital of

Dep.
Результат:
The capital of Missouri is Jefferson City.
The capital of

Illinois is Springfield.
The capital of Indiana is Indianapolis.
The capital of California is Sacramento.
The capital of Washington is Olympia.
The capital of Florida is Not Found.

Слайд 160 Унаследованные коллекции
Класс BitSet предназначен для работы с последовательностями

Унаследованные коллекцииКласс BitSet предназначен для работы с последовательностями битов. Каждый компонент.

битов.

Каждый компонент. этой коллекции может принимать булево значение,

которое обозначает установлен бит или нет.

Содержимое BitSet может быть модифицировано содержимым другого BitSet с использованием операций AND, OR или XOR (исключающее или).

BitSet имеет текущий размер (количество установленных битов) может динамически изменятся.

2011 © EPAM Systems, RD Dep.


Слайд 161 Унаследованные коллекции
По умолчанию все биты в наборе устанавливаются

Унаследованные коллекцииПо умолчанию все биты в наборе устанавливаются в 0 (false).

в 0 (false).

Установка и очистка битов в BitSet

осуществляется методами set(int index) и clear(int index).

Метод int length() возвращает "логический" размер набора битов, int size() возвращает количество памяти занимаемой битовой последовательностью BitSet.

2011 © EPAM Systems, RD Dep.


Слайд 162 Унаследованные коллекции. Example 28
2011 © EPAM Systems, RD

Унаследованные коллекции. Example 282011 © EPAM Systems, RD Dep.package _java._se._06.legacy;import java.util.BitSet;public

Dep.
package _java._se._06.legacy;
import java.util.BitSet;
public class BitSetExample {
public static void main(String[]

args) {
BitSet bs1 = new BitSet();
BitSet bs2 = new BitSet();
bs1.set(0);
bs1.set(2);
bs1.set(4);
System.out
.println("Length = “ + bs1.length()
+ " size = " + bs1.size());
System.out.println(bs1);
bs2.set(1);
bs2.set(2);
bs1.and(bs2);
System.out.println(bs1);
}
}

Результат:

Length = 5 size = 64
{0, 2, 4}
{2}


Слайд 163 КОЛЛЕКЦИИ ДЛЯ ПЕРЕЧИСЛЕНИЙ
2011 © EPAM Systems, RD Dep.

КОЛЛЕКЦИИ ДЛЯ ПЕРЕЧИСЛЕНИЙ2011 © EPAM Systems, RD Dep.

Слайд 164 Коллекции для перечислений
Абстрактный класс EnumSet (наследуется

Коллекции для перечисленийАбстрактный класс EnumSet (наследуется от абстрактного класса AbstractSet) -

от абстрактного класса AbstractSet) - специально реализован для работы

с типами enum.

Все элементы такой коллекции должны принадлежать единственному типу enum, определенному явно или неявно.

Внутренне множество представимо в виде вектора битов, обычно единственного long.

Множества нумераторов поддерживают перебор по диапазону из нумераторов.

Скорость выполнения операций над таким множеством очень высока, даже если в ней участвует большое количество элементов.

2011 © EPAM Systems, RD Dep.


Слайд 165 Коллекции для перечислений
Создание EnumSet

EnumSet EnumSet.noneOf(T.class); // cоздает пустое

Коллекции для перечисленийСоздание EnumSetEnumSet EnumSet.noneOf(T.class); // cоздает пустое множество нумерованных констант

множество нумерованных констант с указанным типом элемента
EnumSet EnumSet.allOf(T.class); //

создает множество нумерованных констант, содержащее все элементы указанного типа
EnumSet EnumSet.of(e1, e2, …); // создает множество, первоначально содержащее указанные элементы
EnumSet EnumSet.copyOf(EnumSet s);
EnumSet EnumSet.copyOf(Collection t);

2011 © EPAM Systems, RD Dep.


Слайд 166 Коллекции для перечислений
EnumSet EnumSet.complementOf(EnumSet s); // создается множество,

Коллекции для перечисленийEnumSet EnumSet.complementOf(EnumSet s); // создается множество, содержащее все элементы,

содержащее все элементы, которые отсутствуют в указанном множестве
EnumSet range(T

from, T to); // создает множество из элементов, содержащихся в диапазоне, определенном двумя элементами

При передаче вышеуказанным методам в качестве параметра null будет сгенерирована исключительная ситуация NullPointerException

2011 © EPAM Systems, RD Dep.

private enum PCounter {UNO, DOS, TRES, CUATRO, CINCO, SEIS, SIETE};
private Set es = null;
es = Collections.synchronizedSet(EnumSet.allOf(PCounter.class));


Слайд 167 Коллекции для перечислений. Example 29
2011 © EPAM Systems,

Коллекции для перечислений. Example 292011 © EPAM Systems, RD Dep.package _java._se._06.enum_;import

RD Dep.
package _java._se._06.enum_;
import java.util.EnumSet;
enum Faculty {
FFSM, MMF, FPMI, FMO,

GEO
}
public class EnumSetExample {
public static void main(String[] args) {
/*
* множество set1 содержит элементы типа enum из интервала,
* определенного двумя элементами
*/
EnumSet set1 = EnumSet.range(Faculty.MMF, Faculty.FMO);
/*
* множество set2 будет содержать все элементы, не содержащиеся _в
* множестве set1
*/
EnumSet set2 = EnumSet.complementOf(set1);
System.out.println(set1);
System.out.println(set2);
}
}

Результат:

[MMF, FPMI, FMO]
[FFSM, GEO]


Слайд 168 Коллекции для перечислений
EnumMap - высоко производительное отображение (map).

Коллекции для перечисленийEnumMap - высоко производительное отображение (map). В качестве ключей

В качестве ключей используются элементы перечисления, что позволяет реализовывать

EnumMap на базе массива. Null ключи запрещены. Null значения допускаются. Не синхронизировано. Все основные операции с EnumMap совершаются за постоянное время. Как правило EnumMap работает быстрее, чем HashMap.

Создание EnumMap

EnumMap(K.class);
EnumMap(EnumMap);
EnumMap(Map);



2011 © EPAM Systems, RD Dep.


Слайд 169 Коллекции для перечислений
Создать объект EnumMap:





Создать синхронизированный объект EnumMap:
2011

Коллекции для перечисленийСоздать объект EnumMap:Создать синхронизированный объект EnumMap:2011 © EPAM Systems,

© EPAM Systems, RD Dep.
private EnumMap em = null;
private

enum PCounter {UNO, DOS, TRES, CUATRO};
em = new EnumMap(PCounter.class);

private Map em = null;
em = Collections.synchronizedMap(new EnumMap(PCounter.class));


Слайд 170 Коллекции для перечислений. Example 30
2011 © EPAM Systems,

Коллекции для перечислений. Example 302011 © EPAM Systems, RD Dep.package _java._se._06.enum_;import

RD Dep.
package _java._se._06.enum_;
import java.util.EnumMap;
enum Size {
S, M, L, XL,

XXL, XXXL;
}
public class EnumMapExample {
public static void main(String[] args) {
EnumMap sizeMap
= new EnumMap(Size.class);
sizeMap.put(Size.S, "S");
sizeMap.put(Size.M, "M");
sizeMap.put(Size.L, "L");
sizeMap.put(Size.XL, "XL");
sizeMap.put(Size.XXL, "XXL");
sizeMap.put(Size.XXXL, "XXXL");
for (Size size : Size.values()) {
System.out.println(size
+ ":" + sizeMap.get(size));
}
}
}

Слайд 171 Коллекции для перечислений
2011 © EPAM Systems, RD Dep.
Результат:
S:S
M:M
L:L
XL:XL
XXL:XXL
XXXL:XXXL

Коллекции для перечислений2011 © EPAM Systems, RD Dep.Результат:S:SM:ML:LXL:XLXXL:XXLXXXL:XXXL

  • Имя файла: javase06-generic-and-collections.pptx
  • Количество просмотров: 123
  • Количество скачиваний: 0