Разделы презентаций


Java SE 4. Collections

Содержание

Java Collections Framework

Слайды и текст этой презентации

Слайд 1Java SE 4. Collections

Java SE 4. Collections

Слайд 2Java Collections Framework

Java Collections Framework

Слайд 3Java Collections Framework
Коллекции (контейнеры) - хранилища, поддерживающие разнообразные способы накопления

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

от массивов могут поддерживать дополнительную функциональность и быть более эффективными в определенных ситуациях
Примерный аналог контейнеров и итераторов STL
В Java коллекции разделены на интерфейсы, абстрагирующие общие принципы работы с коллекциями, и классы, реализующие конкретную функциональность
Большинство из них размещено в пакете java.util.* и его подпакетах

Java Collections FrameworkКоллекции (контейнеры) - хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с целью обеспечения возможностей

Слайд 4Java Collections Framework
Collection Interfaces – представляют собой описания фундаментальных типов

контейнеров и возможных операций над ними.
General-purpose Implementations – Самые

часто используемые реализации эти интерфейсов.
Legacy Implementations – устаревшие контейнеры, существовавшие еще до появления Collection Framework и переписанные для реализации Collection-интерфейсов.
Wrapper Implementations – сами по себе не хранят данных, но добавляют функциональность к другим коллекциям.
Convenience Implementations – высокопроизводительные тривиальные реализации для простых случаев.
Abstract Implementations – частичные реализации как основа для собственных коллекций.
Arrays/Collections Utilities – набор вспомогательных утилитных методов для работы с коллекциями и массивами

Java Collections FrameworkCollection Interfaces – представляют собой описания фундаментальных типов контейнеров и возможных операций над ними. General-purpose

Слайд 5Иерархия интерфейсов
Интерфейсы представляют собой наиболее общие описания фундаментально различных типов

коллекций
List – упорядоченный список с позиционным доступом
Set – коллекция без

дубликатов
Queue – очередь элементов или стэк
Map – ассоциативный массив

Иерархия интерфейсовИнтерфейсы представляют собой наиболее общие описания фундаментально различных типов коллекцийList – упорядоченный список с позиционным доступомSet

Слайд 6Иерархия реализаций
Эта схема показывает только основные реализации, входящие в JDK.

В сторонних библиотеках можно найти сотни других реализаций с самыми

разными свойствами

Иерархия реализацийЭта схема показывает только основные реализации, входящие в JDK. В сторонних библиотеках можно найти сотни других

Слайд 7java.util.Collection

java.util.Collection

Слайд 8public interface Collection extends Iterable
Является образующим для интерфейсов коллекций
Определяет базовую

функциональность любой коллекции
Подразумевает добавление, удаление, выбор элементов в коллекции
Допускает дубликаты

и пустые элементы
Позволяет получить итератор для обхода коллекции
Не все методы, заявленные в интерфейсе, должны реализовываться классами. Часть методов может выбрасывать UnsupportedOperationException
public interface Collection extends IterableЯвляется образующим для интерфейсов коллекцийОпределяет базовую функциональность любой коллекцииПодразумевает добавление, удаление, выбор элементов

Слайд 9public interface Collection extends Iterable

public interface Collection extends Iterable

Слайд 10java.util.Set

java.util.Set

Слайд 11public interface Set extends Collection
Set — коллекция, не содержащая дубликатов
Может

содержать не более одного Null-значения
Все остальные свойства могут варьироваться в

зависимости от конкретной реализации
Set не добавляет дополнительных методов к интерфейсу Collection и является маркерным интерфейсом с дополнительной документацией
Как правило Set не поддерживает порядок элементов, но некоторые реализации это позволяют
public interface Set extends CollectionSet — коллекция, не содержащая дубликатовМожет содержать не более одного Null-значенияВсе остальные свойства

Слайд 12Основные реализации и дочерние интерфейсы Set
HashSet – неупорядоченное множество, реализованное

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

сохраняющее порядок добавления элементов
СopyOnWriteArraySet – потоково-безопасная реализация
Основные реализации и дочерние интерфейсы SetHashSet – неупорядоченное множество, реализованное через хэш-таблицуTreeSet – отсортированное множество на красно-черных

Слайд 13java.util.List

java.util.List

Слайд 14Основные реализации и дочерние интерфейсы List
List — упорядоченная по времени

добавления коллекция
В отличие от других коллекций List позволяет делать позиционный

доступ к элементам по индексам
Некоторые старые коллекции были переделаны, чтобы также реализовывать этот интерфейс (Vector, Stack)

Основные реализации и дочерние интерфейсы ListList — упорядоченная по времени добавления коллекцияВ отличие от других коллекций List

Слайд 15public interface List extends Collection

public interface List extends Collection

Слайд 16Основные реализации List
Vector - Legacy-коллекция, адаптированная к интерфейсу List. Синхронизированная и

безопасная в многопоточной среде
Stack -  Наследник вектора, реализующий LIFO структуру

данных
ArrayList - Самая распространенная реализация на базе массива
LinkedList - Реализация на базе связного списка, также этот класс реализует интерфейс Queue и может выступать в качестве очереди
CopyOnWriteArrayList – Потоково безопасная реализация, создающая копию массива данных при каждой операции записи
Основные реализации ListVector - Legacy-коллекция, адаптированная к интерфейсу List. Синхронизированная и безопасная в многопоточной средеStack -  Наследник вектора,

Слайд 17java.util.Queue

java.util.Queue

Слайд 18Основные реализации и дочерние интерфейсы Queue
ArrayBlockingQueue  хранит элементы в порядке

FIFO; синхронизированная реализация.
SynchronousQueue - каждая операция добавления будет блокирована до соответствующей

операции чтения и наоборот. Фактически это блокирующая ячейка под единственный элемент

PriorityQueue  -
упорядочивает элементы на основе естественного порядка или реализации Comparator, переданной в конструктор при создании очереди

Основные реализации и дочерние интерфейсы QueueArrayBlockingQueue  хранит элементы в порядке FIFO; синхронизированная реализация.SynchronousQueue - каждая операция добавления будет

Слайд 19Queue API
Queue представляет много дополнительных методов для работы с данными

помимо стандартных

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

поведением в ошибочных ситцуациях
Queue APIQueue представляет много дополнительных методов для работы с данными помимо стандартных Они позволяют выполнять вставку или

Слайд 20java.util.Map

java.util.Map

Слайд 21Основные реализации и дочерние интерфейсы Map
Мар – ассоциативный массив,

коллекция пар ключ-значение
Одному ключу не может соответствовать более одного значения.

Так называемых Multimap в Java Collection Framework нет
Основные реализации и дочерние интерфейсы MapМар – ассоциативный массив, коллекция пар ключ-значениеОдному ключу не может соответствовать более

Слайд 22public interface Map
Map предоставляет много вариантов перебора содержимого
Через коллекцию ключей

- keySet()
Через коллекцию значений – values()
Через коллекцию пар, так

называемых Map.Entry
Разные реализации могут допускать или не допускать Null-значения
Примитивный тип не может выступать в роли ключа или значения
public interface MapMap предоставляет много вариантов перебора содержимогоЧерез коллекцию ключей - keySet() Через коллекцию значений – values()Через

Слайд 23Map API example
Типизация Map при помощи Generics позволяет быть уверенным

в том, что все ключи имеют одинаковый тип и все

значения также имеют одинаковый тип, возможно не совпадающий с типом ключей
Map API exampleТипизация Map при помощи Generics позволяет быть уверенным в том, что все ключи имеют одинаковый

Слайд 24Основные реализации Map
HashMap  - Самая распространенная реализация, основана на хэш-таблице
ConcurrentHashMap -

Реализация для работы в многопоточной среде, причем доступ на чтение

будет неблокирующим
Hashtable - Legacy-коллекция с синхронизированным доступом
WeakHashMap - Эта реализация будет удалять записи, на ключи которых нет ссылок за пределами коллекции
LinkedHashMap – Гарантирует, что элементы коллекции будут возвращаться в том же порядке, что и были в нее добавлены
TreeMap – Ключи в этой коллекции будут отсортированы согласно Cormparator’у или реализации Comparable
IdentityHashMap  - Эта реализация использует для сравнения элементов равенcтво ссылок вместо вызова equals().
EnumMap - Ключи этой реализации являются значениями enum. Очень эффективная и высокопроизводительная реализация

Основные реализации MapHashMap  - Самая распространенная реализация, основана на хэш-таблицеConcurrentHashMap - Реализация для работы в многопоточной среде, причем

Слайд 25Итераторы

Итераторы

Слайд 26Iterator
Iterator – специальный объект для последовательного обхода коллекции
Является реализацией одноименного

шаблона проектирования
Iterator можно получить из любой коллекции вызовом метода

iterator()
Для абстрактной коллекции это единственный доступный способ обхода
Цикл for each использует итератор неявным образом
Интерфейс итератора:

IteratorIterator – специальный объект для последовательного обхода коллекцииЯвляется реализацией одноименного шаблона проектирования Iterator можно получить из любой

Слайд 27Iterator – пример использования

Iterator – пример использования

Слайд 28ListIterator
Расширяет стандартный итератор дополнительной функциональностью:
В отличие от простого итератора позволяет

двигаться не только вперед по коллекции, но и назад
Метод set()

перезапишет предыдущий элемент
Метод add() добавит новый элемент в коллекцию непосредственно перед указателем итератора

ListIteratorРасширяет стандартный итератор дополнительной функциональностью:В отличие от простого итератора позволяет двигаться не только вперед по коллекции, но

Слайд 29Сравнение и сортировка элементов коллекций

Сравнение и сортировка элементов коллекций

Слайд 30Comparator
Comparator – интерфейс, описывающий алгоритм сравнения двух объектов.
Он может быть

передан во многие коллекции и структуры данных для упорядочивания данных
Несколько

компараторов могут определять разные правила сортировки одних и тех же данных

ComparatorComparator – интерфейс, описывающий алгоритм сравнения двух объектов.Он может быть передан во многие коллекции и структуры данных

Слайд 31Comparable
В качестве альтернативы сами объекты с данными могут реализовывать интерфейс

Comparable, таким образом предоставляя API для сортировки себя
Если метод compareTo()

возвращает положительное число, то данный объект считается больше аргумента
Если результат – отрицательное число, то данный объект меньше аргумента
В случае равенства возвращается ноль
Эта реализация должна соответствовать реализации equals() – обе они должны показывать равенство в одним и тех же условиях
ComparableВ качестве альтернативы сами объекты с данными могут реализовывать интерфейс Comparable, таким образом предоставляя API для сортировки

Слайд 32Примеры использования Comparator
Если правила сортировки описаны во внешнем Comparator’е, то

сортировка выглядит так:
Если класс сам реализует Comparable, то отсортировать коллекцию

можно следующим образом:

Некоторые коллекции умеют сортировать уже в момент добавления данных без необходимости отдельно вызывать метод сортировки:

Примеры использования ComparatorЕсли правила сортировки описаны во внешнем Comparator’е, то сортировка выглядит так:Если класс сам реализует Comparable,

Слайд 33Collator
Сортировка в лексикографическом порядке должна принимать во внимание не только

алфавит, но и язык оригинала текста
Эта информация не может быть

в общем случае получена из текста, так что она указывается отдельно в виде наследника абстрактного класса Collator
Сollator является реализацией Comparator, то есть может быть использован для сортировки коллекций

CollatorСортировка в лексикографическом порядке должна принимать во внимание не только алфавит, но и язык оригинала текстаЭта информация

Слайд 34Утилитные классы

Утилитные классы

Слайд 35java.util.Collections
Этот утилитный класс предоставляет набор статических методов для типовых операций

над коллекциями
Сортировка
Перемешивание элементов
Разворот коллекции
Заполнение
Двоичный поиск
Определение частоты вхождений
Пересечение
Нахождение минимума и максимума
etc.

java.util.CollectionsЭтот утилитный класс предоставляет набор статических методов для типовых операций над коллекциямиСортировкаПеремешивание элементовРазворот коллекцииЗаполнениеДвоичный поискОпределение частоты вхожденийПересечениеНахождение

Слайд 36java.util.Arrays
Предоставляет утилитные методы для работы с массивами:
Бинарный поиск
Полное и частичное

копирование
Преобразование к реализации интерфейса List
equals(), работающий по элементам массива
deepToString(), вызывающий

toString() у всех элементов массива
Заполнение массива одинаковыми значениями
Сортировка
java.util.ArraysПредоставляет утилитные методы для работы с массивами:Бинарный поискПолное и частичное копированиеПреобразование к реализации интерфейса Listequals(), работающий по

Слайд 37Другие реализации интерфейсов Collection API
Обертки и адаптеры для добавления некоторой

функциональности к уже существующим коллекциям
Синхронизирующие обертки
Обертки, запрещающие модификацию



«Convenience implementations»

- минималистичные реализации коллекций для использования в вырожденных или специфических случаях
Arrays.asList()
Немодифицируемые коллекции из единственного элемента
Пустые Set, List и Map
Другие реализации интерфейсов Collection APIОбертки и адаптеры для добавления некоторой функциональности к уже существующим коллекциямСинхронизирующие обертки Обертки,

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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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