Иногда требуется создать объект типа Set и сразу же его инициализировать значениями. Это может быть полезно при инициализации полей класса. В этой статье мы покажем наиболее краткие способы инициализировать Set значениями во время создания объекта.

Стоит заметить, что будут описаны способы получения изменяемых и неизменяемых объектов — это нужно учитывать в своих программах. В неизменяемый объект типа Set нельзя будет добавить или удалить элемент впоследствии.

Инициализация Set в Java 6

Наиболее универсальный способ, который будет работать в Java 6 и выше:

Set<String> set = new HashSet<String>(Arrays.asList("a", "b", "c")); // Java 6

Здесь мы прибегнули к созданию List из массива, из которого впоследствии создали Set. Это очень громоздкий способ сконструировать Set определёнными значениями, зато он работает на даже на Java 6. В данном случае полученный объект можно изменять, то есть, добавлять и удалять элементы.

Инициализация Set в Java 7

В Java 7 появилась возможность не указывать тип дженерика при создании нового объекта:

Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c")); // Java 7

В остальном же конструкция схожа на вариант для Java 6.

Инициализация Set в Java 9

Java 9 наконец-то привнесла более лаконичные способы инициализации коллекций. Теперь Set можно инициализировать следующим образом:

Set<String> set = Set.of("a", "b", "c"); // Java 9, unmodifiable

Здесь используется дефолтный метод Set.of, который конструирует неизменяемый Set. То есть, в данный Set нельзя поместить новые элементы после его создания.

Резюме

В данной статье мы рассмотрели наиболее лаконичные способы создания и инициализации объекта типа Set. Вне рамок статьи остались способы создания Set с помощью стримов (они слишком громоздкие) и с помощью сторонних библиотек.

Как инициализировать Set значениями во время создания