Преобразование между массивом и набором в Java

1. Общий обзор

В этой короткой статье мы рассмотрим преобразование между массивом и набором – сначала с использованием обычной java, затем Guava и библиотеки Commons Collections от Apache.

 В этой короткой статье мы рассмотрим преобразование между массивом и набором – сначала с использованием обычной java, затем Guava и библиотеки Commons Collections от Apache.

2. Преобразование массива в набор

2.1. Использование обычной Java

Давайте сначала рассмотрим, как превратить массив в набор, используя обычную Java:

@Test
public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
Set<Integer> targetSet = new HashSet<Integer>(Arrays.asList(sourceArray));
}

В качестве альтернативы, набор может быть сначала создан, а затем заполнен элементами массива:

@Test
public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
Set<Integer> targetSet = new HashSet<Integer>();
Collections.addAll(targetSet, sourceArray);
}

2.2. Использование Google Guava

Далее, давайте рассмотрим преобразование Guava из массива в набор:

@Test
public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
Set<Integer> targetSet = Sets.newHashSet(sourceArray);
}

2.3. Использование коллекций Apache Commons

Finally, let’s do the conversion using the Commons Collection library from Apache:

@Test
public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
Set<Integer> targetSet = new HashSet<>(6);
CollectionUtils.addAll(targetSet, sourceArray);
}

3. Преобразование набора в массив

3.1. Использование простой Java

Теперь давайте рассмотрим обратный процесс – преобразование существующего набора в массив:

@Test
public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
Integer[] targetArray = sourceSet.toArray(new Integer[0]);
}

Обратите внимание, что toArray(new T[0]) является предпочтительным способом использования метода по сравнению с toArray(new T[size]).

3.2. Использование гуавы

Далее – раствор из гуавы:

@Test
public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
int[] targetArray = Ints.toArray(sourceSet);
}

Обратите внимание, что мы используем Ints API от Guava, поэтому это решение зависит от типа данных, с которыми мы работаем.

Оригинал статьи: https://www.baeldung.com/convert-array-to-set-and-set-to-array