Интерфейс Set в Java
Last updated: 5 мая 2025 г.Благодаря классам реализующим Set
можно создать массив в котором элементы не повторяются.
HashSet
это как hashmap, только без значений, только ключи.
В hashset могут храниться только уникальные ключи, благодаря уже ранее упомянутому hashcode, который есть у каждого элемента добавляемого в hashset.
Поясним на примере:
1import java.util.*;
2
3public class Set {
4 public static void main(String[] args) {
5 // создаем коллекцию
6 HashSet<String> hSet = new HashSet<String>();
7 // добавление элемента
8 hSet.add("Sunday");
9 hSet.add("Monday");
10 hSet.add("Sunday");
11 hSet.add("Tuesday");
12 // удаление элемента
13 hSet.remove("Monday");
14 // в hashset нету get поэтому сначала нужно преобразовать
15 // в массив а потом извлекать либо использовать iterator
16 String[] hSetArr = hSet.toArray(new String[hSet.size()]);
17 for(int i = 0; i < hSetArr.length; i++) {
18 System.out.println(hSetArr[i]);
19 }
20 // проверка на наличие элемента в списке
21 System.out.println(hSet.contains("Tuesday"));
22 // Как можно увидеть по результатам в массиве всего один Sunday
23 }
24}
Вывод:

TreeSet
TreeSet
– хранит элементы в виде дерева, что позволяет быстрее искать элементы.
Все элементы отсортированы и не повторяются.
TreeSet лучше всего подходит для нахождения диапазонов.
Пример программы:
1import java.util.*;
2
3public class Set {
4 public static void main(String[] args) {
5 // создаем коллекцию
6 TreeSet<String> tSet = new TreeSet<String>();
7 // добавление элемента
8 tSet.add("D");
9 tSet.add("B");
10 tSet.add("A");
11 tSet.add("C");
12 tSet.add("E");
13 // удаление элемента
14 tSet.remove("C");
15 // В TreeSet нету get поэтому сначала нужно преобразовать
16 // в массив а потом извлекать либо использовать iterator
17 String[] tSetArr = tSet.toArray(new String[tSet.size()]);
18 for(int i = 0; i < tSetArr.length; i++) {
19 System.out.println(tSetArr[i]);
20 }
21 // проверка на наличие элемента в списке
22 System.out.println(tSet.contains("П"));
23 // для нахождения диапазона
24 System.out.println(tSet.tailSet("B"));
25 System.out.println(tSet.headSet("B"));
26 // Как можно увидеть по результатам в массиве
27 // всего один В и элементы хранятся в алфавитном порядке
28 }
29}
Вывод:

LinkedHashSet
LinkedHashSet
– хранит элементы в порядке вставки и элементы не повторяются.
Опять таки, лучше использовать когда элементы часто вставляются/удаляются.
Пример программы:
1import java.util.*;
2
3public class Set {
4 public static void main(String[] args) {
5 // создаем коллекцию
6 LinkedHashSet<String> ltSet = new LinkedHashSet<String>();
7 // добавление элемента
8 ltSet.add("D");
9 ltSet.add("B");
10 ltSet.add("A");
11 ltSet.add("C");
12 ltSet.add("B");
13 // удаление элемента
14 ltSet.remove("C");
15 // LinkedHashSet нету get поэтому сначала нужно преобразовать
16 // в массив а потом извлекать либо использовать iterator
17 String[] ltSetArr = ltSet.toArray(new String[ltSet.size()]);
18 for(int i = 0; i< ltSetArr.length; i++) {
19 System.out.println(ltSetArr[i]);
20 }
21 // проверка на наличие элемента в списке
22 System.out.println(ltSet.contains("B"));
23 //Как можно увидеть по результатам в масиве всего один В
24 // элементы хранятся в порядке вставки
25 }
26}
Вывод:

Следующие уроки
Потоки ввода/вывода. PrintWriter и PrintStream
10
мин.
FileStream в Java: чтение и запись файлов
7
мин.
DataStream в Java
8
мин.