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

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

1. обзор

В этой короткой статье мы рассмотримconverting between an array and a Set - сначала с использованием простой java, затем Guava и библиотеки Commons Collections от Apache.

Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.

2. ПреобразоватьArray вSet

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

Давайте сначала посмотрим, какturn the array to a Set using plain Java:

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

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

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

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

Теперь давайте посмотрим наthe Guava conversion from array to Set:

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

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

Наконец, давайте сделаем преобразование с помощью библиотеки Commons Collection от Apache:

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

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

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

Теперь посмотрим на обратное -converting an existing Set to an array:

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

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

Далее - решение Guava:

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

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

3.3 Using Commons Collections

И наконец - давайте преобразуемSet в массив с помощью библиотеки Apache Commons Collections:

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

4. Заключение

Реализация всех этих примеров и фрагментов кодаcan be found over on Github - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.