SlideShare a Scribd company logo
1 of 18
Множества (наборы) Set
Виталий Унгурян
unguryan@itstep.org
Множества (наборы) Set
Set
Set - коллекция, которая не может
содержать повторяющихся одинаковых
элементов, иногда называемая
множеством.
Более формально, коллекция не может содержать
пары элементов e1 и e2 таких, что выполняется
условие e1.equals(e2) и не более одного null
элемента.
HashSet
Коллекция, не позволяющая хранить
одинаковые объекты(как и любой Set).
HashSet инкапсулирует в себе объект
HashMap (то-есть использует для
хранения хэш-таблицу).
Set<String> cats = new HashSet<>();
Хэш таблица
Хеш-таблица хранит информацию, используя
механизм хеширования, в котором
содержимое ключа используется для
определения уникального значения,
называемого хеш-кодом. Этот хеш-код
применяется в качестве индекса, с которым
ассоциируются данные, доступные по этому
ключу. Преобразование ключа в хеш-код
выполняется автоматически.
LinkedHashSet
LinkedHashSet -  поддерживает связный 
список элементов набора в том порядке, в 
котором они вставлялись. Это позволяет 
организовать упорядоченную итерацию 
вставки в набор. То есть, когда идет 
перебор объекта класса LinkedHashSet с 
применением итератора, элементы 
извлекаются в том порядке, в каком они 
были добавлены.
SortedSet
SortedSet, унаследован от Set, добавляет в 
контракт существенные  изменения.
Объект  итератора,   построенный  для   
множества, возвращает элементы в строго 
определенном порядке.  По умолчанию 
итератор действует в соответствии с 
правилом естественного упорядочения 
(natural ordering) элементов множества. 
порядок следования элементов.
TreeSet
TreeSet - коллекция, которая хранит свои 
элементы в виде упорядоченного по 
значениям дерева. TreeSet инкапсулирует 
в себе TreeMap, который в свою очередь 
использует сбалансированное бинарное 
красно-черное дерево для хранения 
элементов. TreeSet хорош тем, что для 
операций add, remove и contains 
потребуется гарантированное время 
log(n).
Красно-чёрное дерево
Красно-чёрное дерево (англ. Red-Black-Tree, 
RB-Tree) — это одно из самобалансирующихся 
двоичных деревьев поиска, гарантирующих 
логарифмический рост высоты дерева от числа 
узлов и быстро выполняющее основные 
операции дерева поиска: добавление, 
удаление и поиск узла. Сбалансированность 
достигается за счёт введения дополнительного 
атрибута узла дерева — «цвета». Этот атрибут 
может принимать одно из двух возможных 
значений — «чёрный» или «красный».
Пример красно-черного дерева
 Узел либо красный, либо чёрный.
 Корень — чёрный. (В других определениях это правило иногда опускается. Это правило 
слабо влияет на анализ, так как корень всегда может быть изменен с красного на 
чёрный, но не обязательно наоборот).
 Все листья(NIL) — черные.
 Оба потомка каждого красного узла — черные.
 Всякий простой путь от данного узла 
до любого листового узла,
 являющегося его 
потомком, содержит 
Одинаковое число 
черных узлов.
Интерфейс Comparable
В интерфейсе Comparable объявлен
всего один метод compareTo(Object obj),
предназначенный для реализации
упорядочивания объектов класса. Его
удобно использовать при сортировке
упорядоченных списков или массивов
объектов.
int compareTo(Object obj)
Данный метод сравнивает вызываемый
объект с obj. В отличие от метода equals,
который возвращает true или false, compareTo
возвращает:
 0, если значения равны;
 Отрицательное значение, если
вызываемый объект меньше параметра;
 Положительное значение , если
вызываемый объект больше параметра.
Интерфейс Comparator
В интерфейсе Comparator объявлено два метода
compare(Object obj1, Object obj2) и equals(Object obj).
compare(Object obj1, Object obj2) –,
упорядочивает объекты класса. На выходе получает
0, положительное значение или отрицательное
значение.
Метод может выбросить исключение
ClassCastException, если типы объектов не
совместимы при сравнении.
С помощью Comparator вы можете создавать
несколько видов независимых сортировок.
BitSet
Класс BitSet, ведёт себя подобно
массиву boolean, но упаковывает
данные так, что для одного бита
выделяется всего один бит памяти (с
небольшими издержками для всего
массива).
BitSet bits1 = new BitSet(16);
bits1.set(1); bits1.clear(1); bits1.xor(bits2);
BitSet
BitSet хранит внутри себя массив типа
long, а при запросе или установке
значения определенного бита —
высчитывает индекс нужного long и
пользуясь побитовыми операциями и
операциями сдвига производит
вычисления над единственным битом.
Немодифицируемые представления
Класс Collections содержит методы,
которые создают не модифицируемые
представления (unmodifiable view)
наборов данных. В этих представлениях
реализована проверка существующего
набора, выполняемая на этапе работы
программы. При попытке
модифицировать набор, генерируется
исключение и набор данных остаётся
неизменным.
Синхронизируемые представления
Вместо того чтобы реализовать классы
наборов данных, обеспечивающих
безопасную работу с потоками,
разработчики библиотеки предпочли
использовать для этого механизм
представлений.

More Related Content

What's hot

Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Technopark
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonYandex
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыUnguryan Vitaliy
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libsolegol
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотекаphearnot
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Stfalcon Meetups
 
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STLmcroitor
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularitiesmcroitor
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Technopark
 
алгоритмы stl
алгоритмы stlалгоритмы stl
алгоритмы stlmcroitor
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поискFedor Tsarev
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2Technopark
 

What's hot (20)

Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
Collections
CollectionsCollections
Collections
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libs
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотека
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
 
контейнеры STL
контейнеры STLконтейнеры STL
контейнеры STL
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3
 
алгоритмы stl
алгоритмы stlалгоритмы stl
алгоритмы stl
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2
 

Viewers also liked

Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибкиUnguryan Vitaliy
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Unguryan Vitaliy
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Unguryan Vitaliy
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.Unguryan Vitaliy
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Unguryan Vitaliy
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылокUnguryan Vitaliy
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью. Unguryan Vitaliy
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Unguryan Vitaliy
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииUnguryan Vitaliy
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAbhishek Asthana
 

Viewers also liked (17)

Uml
UmlUml
Uml
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Java. Циклы.
Java. Циклы.Java. Циклы.
Java. Циклы.
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in Java
 

Similar to Java. Интерфейс Set - наборы (множества) и его реализации.

Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Anton Moiseenko
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Javametaform
 
set multiset.pptx
set multiset.pptxset multiset.pptx
set multiset.pptxsdfsdf87
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Лекция 6: Словари. Хеш-таблицы
Лекция 6: Словари. Хеш-таблицыЛекция 6: Словари. Хеш-таблицы
Лекция 6: Словари. Хеш-таблицыMikhail Kurnosov
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскалеAnn Eres
 

Similar to Java. Интерфейс Set - наборы (множества) и его реализации. (9)

Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Lec 4
Lec 4Lec 4
Lec 4
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Java
 
set multiset.pptx
set multiset.pptxset multiset.pptx
set multiset.pptx
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Лекция 6: Словари. Хеш-таблицы
Лекция 6: Словари. Хеш-таблицыЛекция 6: Словари. Хеш-таблицы
Лекция 6: Словари. Хеш-таблицы
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскале
 

More from Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование. Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектамиUnguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoFUnguryan Vitaliy
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействиеUnguryan Vitaliy
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологииUnguryan Vitaliy
 

More from Unguryan Vitaliy (20)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Stream API
Stream APIStream API
Stream API
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JSTL
JSTLJSTL
JSTL
 
JSP
JSPJSP
JSP
 
JDBC
JDBCJDBC
JDBC
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 

Java. Интерфейс Set - наборы (множества) и его реализации.