Класс LinkedHashSet
Класс LinkedHashSet - это коллекция, которая сочетает в себе
быстрый доступ к элементам (как HashSet) и предсказуемый
порядок обхода (как List). В отличие от обычного HashSet,
LinkedHashSet запоминает порядок, в котором элементы были
добавлены в коллекцию. Это достигается за счет использования
двусвязного списка, который пронизывает все элементы.
Класс наследуется от HashSet и реализует интерфейс Set.
Основное преимущество - итерация по элементам происходит в том
порядке, в котором они были вставлены. Это делает класс идеальным
выбором, когда важен порядок элементов, но при этом необходимо
исключить дубликаты.
Синтаксис
LinkedHashSet<Тип> имя = new LinkedHashSet<>();
Пример
Давайте создадим LinkedHashSet и добавим в него несколько
элементов, а затем выведем их на экран, чтобы убедиться в
сохранении порядка:
import java.util.LinkedHashSet;
public class Main
{
public static void main(String[] args)
{
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
System.out.println(set);
}
}
Результат выполнения кода:
[a, b, c, d]
Пример
Давайте попробуем добавить дубликат элемента в LinkedHashSet
и посмотрим, что произойдет:
import java.util.LinkedHashSet;
public class Main
{
public static void main(String[] args)
{
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("a");
set.add("b");
set.add("a");
set.add("c");
System.out.println(set);
}
}
Результат выполнения кода:
[a, b, c]
Как видите, дубликат не был добавлен, а порядок элементов сохранился.
Пример
Давайте проверим наличие элемента в LinkedHashSet
с помощью метода contains:
import java.util.LinkedHashSet;
public class Main
{
public static void main(String[] args)
{
LinkedHashSet<Integer> set = new LinkedHashSet<>();
set.add(1);
set.add(2);
set.add(3);
boolean res = set.contains(2);
System.out.println(res);
}
}
Результат выполнения кода:
true
Пример
Давайте удалим элемент из LinkedHashSet и проверим
итоговый порядок:
import java.util.LinkedHashSet;
public class Main
{
public static void main(String[] args)
{
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.remove("b");
System.out.println(set);
}
}
Результат выполнения кода:
[a, c]