Set в Java. Hashset пример

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Данная статья:


Привет! В нашем самоучителе мы рассмотрим следующие коллекции:

Это статья про структуру данных множество (Set) - один из способов хранения данных в Java.

Что такое множество (Set) 

Как мы уже говорили, множество - это такой же способ хранения данных, как массив или список. Но особенность множества в том, что оно может хранить только уникальные значения.

Например, если у нас есть множество Integer-ов - в нем лежат числа 1, 2 , 3, 4 и 5:

Если мы попробуем добавить туда единицу, у нас не получится - потому что в множестве уже есть единица:

Таким образом, множество обеспечивает уникальность своих элементов. Можете быть спокойны - дублироваться в множествах ничего не будет.

Какие есть виды множеств

Как и List, множество - это всего лишь интерфейс. Давайте посмотрим, какие реализации существуют в Java.

Как видите, есть три основные виды множеств - HashSet, LinkedHashSet и TreeSet. Есть и другие - но пока мы только знакомимся с Set-ми, пока нам знать нам их совсем не обязательно 🙂

Среди HashSet, LinkedHashSet и TreeSet чаще всего используется HashSet.

Чем отличаются HashSet, LinkedHashSet и TreeSet

  • HashSet хранит элементы в произвольном порядке, но зато быстро ищет. Подходит, если порядок Вам не важен, но важна скорость. Более того, для оптимизации поиска, HashSet будет хранить элементы так, как ему удобно.
  • LinkedHashSet будет хранить элементы в порядке добавления, но зато работает медленнее.
  • TreeSet хранит элементы отсортированными.

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

Синтаксис

Обратите внимание - как и в списках, мы указываем тип данных, которые находятся в множестве:

Операции с множествами

1. add() - добавляет элемент в множество

2. remove() - удаляет элемент из множества

3. contains() - определяет, есть ли элемент в множестве

4. size() - возвращает размер множества

5. clear() - удаляет все элементы из коллекции

6. isEmpty() - возвращает true если множество пустое, и false если там есть хотя бы 1 элемент

Пример 1

  • add() - добавляет элемент в множество. Например:

Тут мы добавили в множество Integer-ов три числа - 1, 2 и 3. Давайте теперь добавим цикл for each и выведем коллекцию на экран:

Получим:

Отлично, все как мы хотели 🙂 Давайте теперь для интереса попробуем добавить элемент, который у нас уже есть - например единицу:

В консоли получим то же самое:

Кстати, хотя тут мы не видим что элементы хранятся в произвольном порядке, не давайте себя обмануть 🙂 Всегда в порядке добавления будут храниться только элементы LinkedHashSet, а отсортировано - TreeSet. Сейчас нам просто повезло 🙂

Пример 2

  • remove() - удаляет элемент из множества. Например, дополним код из примера выше:

В консоли получаем:

Пример 3

  • contains() - определяет, есть ли элемент в множестве. Например:

В консоли получим:

Пример 4 

  • size() - возвращает размер множества. Например:

Получаем:

Пример 5 

  • clear() - удаляет все элементы из коллекции:

Получаем:

Пример 6

  • isEmpty() - возвращает true если множество пустое, и false если там есть хотя бы один элемент:

В результате получаем:


Надеемся, что наша статья была Вам полезна.  Можно записаться к нам на курсы по Java на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--