Скачать презентацию Java 10 КОЛЛЕКЦИИ Множества Карты отображений 1 Скачать презентацию Java 10 КОЛЛЕКЦИИ Множества Карты отображений 1

0a303771194ef81aecfa5ffadbc57608.ppt

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

Java 10. КОЛЛЕКЦИИ Множества Карты отображений 1 Java 10. КОЛЛЕКЦИИ Множества Карты отображений 1

Множества Интерфейс Set<E> объявляет поведение коллекции, не допускающей дублирования элементов. Интерфейс Sorted. Set<E> наследует Множества Интерфейс Set объявляет поведение коллекции, не допускающей дублирования элементов. Интерфейс Sorted. Set наследует Set и объявляет поведение набора, отсортированного в возрастающем порядке, заранее определенном для класса. Интерфейс Navigable. Set существенно облегчает поиск элементов. Множества часто используются для проверки принадлежности объекта заданному множеству. Т. е. важнейшая операция Set - операция поиска, поэтому на практике обычно выбирается реализация Hash. Set, оптимизированная для быстрого поиска. Interface Hierarchy Set Hierarchy 2

Класс Hash. Set<E> наследуется от абстрактного суперкласса Abstract. Set<E> и реализует интерфейс Set<E>, используя Класс Hash. Set наследуется от абстрактного суперкласса Abstract. Set и реализует интерфейс Set, используя хэш-таблицу для хранения коллекции. Ключ (хэш-код) используется вместо индекса для доступа к данным, что значительно ускоряет поиск определенного элемента. Скорость поиска существенна для коллекций с большим количеством элементов. Все элементы такого множества упорядочены посредством хэштаблицы, в которой хранятся хэш-коды элементов. example 09 - использование множества для вывода всех уникальных слов из файла : Demo. Hash. Set. java 3

Класс Tree. Set<E> для хранения объектов использует бинарное дерево. При добавлении объекта в дерево Класс Tree. Set для хранения объектов использует бинарное дерево. При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки. Сортировка происходит благодаря тому, что все добавляемые элементы реализуют интерфейсы Comparator и Comparable. Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках. 4

Методы класса Tree. Set<E> E first() E last() извлечение первого и последнего (наименьшего и Методы класса Tree. Set E first() E last() извлечение первого и последнего (наименьшего и наибольшего) элементов Sorted. Set sub. Set(E from, E to) Sorted. Set tail. Set(E from) Sorted. Set head. Set(E to) извлечение определенной части множества Comparator comparator() возвращает объект Comparator, используемый для сортировки объектов множества или null, если выполняется обычная сортировка example 09 - создание множества из списка и его методы: Demo. Tree. Set. java 5

Enum. Set<E extends Enum<E>> Абстрактный класс Enum. Set<E extends Enum<E>> наследуется от абстрактного класса Enum. Set> Абстрактный класс Enum. Set> наследуется от абстрактного класса Abstract. Set. Специально реализован для работы с типами enum. Все элементы такой коллекции должны принадлежать единственному типу enum, определенному явно или неявно. Внутренне множество представимо в виде вектора битов, обычно единственного long. Множества нумераторов поддерживают перебор по диапазону из нумераторов. Скорость выполнения операций над таким множеством очень высока, даже если в ней участвует большое количество элементов. 6

Создание объектов Enum. Set<E> Создать объект этого класса можно только с помощью статических методов Создание объектов Enum. Set Создать объект этого класса можно только с помощью статических методов класса: Enum. Set none. Of(Class elem. Type) cоздает пустое множество нумерованных констант с указанным типом элемента. all. Of(Class element. Type) создает множество нумерованных констант, содержащее все элементы указанного типа. of(E first, E. . . rest) создает множество, первоначально содержащее указанные элементы. complement. Of(Enum. Set s) создает множество, содержащее все элементы, которые отсутствуют в указанном множестве. range(E from, E to) создает множество из элементов, содержащихся в диапазоне, определенном двумя элементами. При передаче вышеуказанным методам в качестве параметра null будет сгенерирована исключительная ситуация Null. Pointer. Exception. example 09 - иcпользование множества enum-типов : Use. Enum. Set. java 7

Методы интерфейса Navigable. Set first() возвращает первый элемент из множества sub. Set(E from. Element, Методы интерфейса Navigable. Set first() возвращает первый элемент из множества sub. Set(E from. Element, E to. Element) возвращает список элементов, находящихся между from. Element и to. Element, причем последний не включается head. Set(E element) tail. Set(E element, boolean inclusive) возвращают то множество элементов, которое меньше либо больше element соответственно Если inclusive равно true, то элемент включается в найденное множество и не включается в противном случае example 09 - иcпользование множества Navigable. Set: Navigable. Set. Test. java 8

Карты отображений Карта отображений – это объект, который хранит пару “ключзначение”. Поиск объекта (значения) Карты отображений Карта отображений – это объект, который хранит пару “ключзначение”. Поиск объекта (значения) облегчается по сравнению с множествами за счет того, что его можно найти по его уникальному ключу. Уникальность объектов-ключей должна обеспечиваться переопределением методов hash. Code() и equals() пользовательским классом. Если элемент с указанным ключом отсутствует в карте, то возвращается значение null. 9

Интерфейсы карт Map<K, V> – отображает уникальные ключи и значения Map. Entry<K, V> – Интерфейсы карт Map – отображает уникальные ключи и значения Map. Entry – описывает пару “ключ-значение” Sorted. Map – содержит отсортированные ключи и значения Navigable. Map – добавляет новые возможности поиска по ключу Interface Hierarchy 10

Классы карт отображений Abstract. Map<K, V> – реализует интерфейс Map<K, V> Hash. Map<K, V> Классы карт отображений Abstract. Map – реализует интерфейс Map Hash. Map – расширяет Abstract. Map, используя хэштаблицу, в которой ключи отсортированы относительно значений их хэш-кодов Tree. Map – расширяет Abstract. Map, используя дерево, где ключи расположены в виде дерева поиска в строгом порядке Weak. Hash. Map позволяет механизму сборки мусора удалять из карты значения по ключу, ссылка на который вышла из области видимости приложения Linked. Hash. Map запоминает порядок добавления объектов в карту и образует при этом дважды связанный список ключей. Этот механизм эффективен, только если превышен коэффициент загруженности карты при работе с кэш памятью и др. Identity. Hash. Map хэш-коды объектов-ключей вычисляются методом System. identity. Hash. Code() по адресу объекта в памяти, в отличие от обычного значения hash. Code(), вычисляемого сугубо по содержимому самого объекта. Map Hierarchy 11

Методы интерфейса Map<K, V> void clear() удаляет все пары из вызываемой карты boolean contains. Методы интерфейса Map void clear() удаляет все пары из вызываемой карты boolean contains. Key(Object key) возвращает true, если вызывающая карта содержит key как ключ boolean contains. Value(Object value) возвращает true, если вызывающая карта содержит value как значение Set> entry. Set() возвращает множество, содержащее значения карты Set key. Set() возвращает множество ключей V get(Object obj) возвращает значение, связанное с ключом obj 12

Методы интерфейса Map<K, V> V put(K key, V value) помещает ключ key и значение Методы интерфейса Map V put(K key, V value) помещает ключ key и значение value в вызывающую карту. При добавлении в карту элемента с существующим ключом произойдет замена текущего элемента новым. При этом метод возвратит заменяемый элемент void put. All Map t) помещает коллекцию t в вызывающую карту V remove(Object key) удаляет пару “ключ-значение” по ключу key Collection values() возвращает коллекцию, содержащую значения карты 13

Методы интерфейса Map. Entry<K, V> K get. Key() возвращает ключ текущего входа V get. Методы интерфейса Map. Entry K get. Key() возвращает ключ текущего входа V get. Value() возвращает значение текущего входа V set. Value(V obj) устанавливает значение объекта obj в текущем входе example 10 : создание хэш-карты и замена элемента по ключу: Demo. Hash. Map. java example 10 : применение коллекций при проверке доступа в систему : Demo. Security. java 14

Enum. Map<K extends Enum<K>, V> Класс Enum. Map<K extends Enum<K>, V> в качестве ключа Enum. Map, V> Класс Enum. Map, V> в качестве ключа может принимать только объекты, принадлежащие одному типу enum, который должен быть определен при создании коллекции. Специально организован для обеспечения максимальной скорости доступа к элементам коллекции. example 10 : пример работы с классом Enum. Map: Use. Enum. Map. java 15

Унаследованные коллекции В ряде распределенных приложений, например с использованием сервлетов, до сих пор применяются Унаследованные коллекции В ряде распределенных приложений, например с использованием сервлетов, до сих пор применяются коллекции, более медленные в обработке, но при этом потокобезопасные, существовавшие в языке Java с момента его создания: l карта Hashtable, l список Vector l Перечисление Enumeration. Все они также были параметризованы, но сохранили все свои особенности. Класс Hashtable реализует интерфейс Map, но обладает также несколькими интересными методами: l Enumeration elements() – возвращает перечисление (аналог итератора) для значений карты; l Enumeration keys() – возвращает перечисление для ключей карты пример11 : создание хэш-таблицы и поиск элемента по ключу: Hash. Table. Demo. java 16

Класс Collections содержит большое количество статических методов, предназначенных для манипулирования коллекциями. С применением предыдущих Класс Collections содержит большое количество статических методов, предназначенных для манипулирования коллекциями. С применением предыдущих версий языка было разработано множество коллекций, в которых никаких проверок нет, следовательно, при их использовании нельзя гарантировать, что в коллекцию не будет помещен “посторонний” объект. Для этого в класс Collections был добавлен новый метод – checked. Collection(): public static Collection checked. Collection(Collection c, Class type) Этот метод создает коллекцию, проверяемую на этапе выполнения, то есть в случае добавления “постороннего” объекта генерируется исключение Class. Cast. Exception example 11 : проверяемая коллекция: Safe. Collection. java 17

Специализированные методы Класса Collections checked. List(), checked. Sorted. Map(), checked. Sorted. Set(), checked. Set() Специализированные методы Класса Collections checked. List(), checked. Sorted. Map(), checked. Sorted. Set(), checked. Set() для проверки конкретных типов коллекций boolean add. All(Collection c, T. . . a) добавляет в параметризованную коллекцию соответствующие параметризации элементы void copy(List dest, List src) копирует все элементы из одного списка в другой boolean disjoint(Collection c 1, Collection c 2) возвращает true, если коллекции не содержат одинаковых элементов 18

Специализированные методы Класса Collections <T> List <T> empty. List(), <K, V> Map <K, V> Специализированные методы Класса Collections List empty. List(), Map empty. Map(), Set empty. Set() возвращают пустой список, карту отображения и множество соответственно void fill(List list, T obj) заполняет список заданным элементом int frequency(Collection c, Object o) возвращает количество вхождений в коллекцию заданного элемента > T max(Collection coll) > T min(Collection coll) возвращают минимальный и максимальный элемент соответственно 19

Специализированные методы Класса Collections <T> T max(Collection <? extends T> coll, Comparator<? super T> Специализированные методы Класса Collections T max(Collection coll, Comparator comp) T min(Collection coll, Comparator comp) возвращают минимальный и максимальный элемент соответственно, используя Comparator для сравнения boolean replace. All(List list, T old. Val, T new. Val) заменяет все заданные элементы новыми > void sort(List list) void sort(List list, Comparator c) сортировка списка, естественным порядком и используя Comparator соответственно void swap(List list, int i, int j) меняет местами элементы списка стоящие на заданных позициях 20

Специализированные методы Класса Collections <T> List <T> n. Copies(int n, T o) возвращает список Специализированные методы Класса Collections List n. Copies(int n, T o) возвращает список из n заданных элементов void reverse(List list) “переворачивает” список; void rotate(List list, int distance) сдвигает список циклически на заданное число элементов void shuffle(List list) перетасовывает элементы списка Set singleton(T o) List singleton. List(T o) Map singleton. Map(K key, V value) создают множество, список и карту отображения, состоящие из одного элемента /* пример # 11 : методы класса Collections: Collections. Demo. java */ 21

Методы класса Arrays int binary. Search(параметры) перегруженный метод организации бинарного поиска значения в массивах Методы класса Arrays int binary. Search(параметры) перегруженный метод организации бинарного поиска значения в массивах примитивных и объектных типов. Возвращает позицию первого совпадения void fill(параметры) перегруженный метод для заполнения массивов значениями различных типов и примитивами void sort(параметры) перегруженный метод сортировки массива или его части с использованием интерфейса Comparator и без него static T[ ] copy. Of(T[ ] original, int new. Length) заполняет массив определенной длины, отбрасывая элементы или заполняя null при необходимости 22

Методы класса Arrays static <T> T[ ] copy. Of. Range(T[ ] original, int from, Методы класса Arrays static T[ ] copy. Of. Range(T[ ] original, int from, int to) копирует заданную область массива в новый массив List as. List(T. . . a) метод, копирующий элементы массива в объект типа List /* пример # 11 : методы класса Arrays : Arrays. Equal. Demo. java*/ 23

Ключевые моменты l l Интерфейс Set<E> объявляет поведение коллекции, не допускающей дублирования элементов Карта Ключевые моменты l l Интерфейс Set объявляет поведение коллекции, не допускающей дублирования элементов Карта отображений – это объект, который хранит пару “ключзначение” (Map) Различные реализации Set и Map обеспечивают различные способы хранения элементов и доступа к ним Для работы с элементами карт используется интерфейс Map. Entry 24