Иногда требуется создать объект типа 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 с помощью стримов (они слишком громоздкие) и с помощью сторонних библиотек.