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

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

1. обзор

В этой короткой статье мы рассмотримthe conversion between a List and a Set - начиная с Plain Java, используя Guava и, наконец, используя библиотекуApache Commons Collections.

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

Дальнейшее чтение:

Как найти элемент в списке с помощью Java

Взгляните на несколько быстрых способов найти элемент в списке в Java

Read more

Перестановки коллекций на Java

Узнайте, как перемешать различные коллекции в Java.

Read more

Проверьте, равны ли два списка в Java

Короткая статья была посвящена общей проблеме тестирования, если два экземпляра List содержат одинаковые элементы в абсолютно одинаковом порядке.

Read more

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

2.1. С простой Java

Начнем с преобразованияfrom a List to a Set using Java:

public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(sourceList);
}

Как видите, процесс преобразования является типобезопасным и очень простым - поскольку конструкторы каждой коллекции принимают другую коллекцию в качестве источника.

2.2. Wситх Гуава

Давайте сделаем то же преобразование с помощью Guava:

public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = Sets.newHashSet(sourceList);
}

2.3. С коллекциями Apache Commons

Затем давайте воспользуемся Commons Collections API для преобразования междуList иSet:

public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(6);
    CollectionUtils.addAll(targetSet, sourceList);
}

3. ПреобразоватьSet вList

3.1. С простой Java

Теперь сделаем обратное преобразование -from a Set to a List – using Java:

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
   Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
   List targetList = new ArrayList<>(sourceSet);
}

3.2. С гуавой

И решение Guava:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = Lists.newArrayList(sourceSet);
}

Очень похоже на подход Java, только с немного менее дублированным кодом.

3.3. С коллекциями Apache Commons

Наконец, решение Commons Collections для преобразования междуSet иList:

public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = new ArrayList<>(6);
    CollectionUtils.addAll(targetList, sourceSet);
}

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

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