Преобразование набора в список в Java и наоборот

В Java List и Set — это типы коллекций для хранения элементов. List — это упорядоченная коллекция на основе индекса, а Set — неупорядоченная коллекция. List допускает дублирование элементов, но Set содержит только уникальные элементы. Оба типа коллекций довольно сильно отличаются и имеют свои собственные варианты использования.

В этом уроке Java, узнайте, как преобразовать указанный Set в List. Также, узнайте, как обратно преобразовать List в Set, полезный метод для удаления дубликатов элементов из списка.

1. Преобразовать набор в список

Мы будем использовать следующий тип Set to List разными способами.

Set<Integer> set = Set.of(1, 2, 3);

1.1 Использование конструктора списков

Чтобы преобразовать заданный Set в List, мы можем использовать конструктор ArrayList и передать HashSet в качестве аргумента конструктора. Он скопирует все элементы из HashSet в недавно созданный ArrayList.

ArrayList<Integer> arrayList = new ArrayList(set);Assertions.assertEquals(3, arrayList.size());

1.2 Использование List.addAll()

Еще один полезный метод получения списка с элементами набора — создание пустого экземпляра списка и использование его метода addAll() для добавления всех элементов набора в список.

ArrayList<Integer> arrayList = new ArrayList<>();arrayList.addAll(set);Assertions.assertEquals(3, arrayList.size());

1.3 Использование потока

Сначала преобразуйте Set в Stream, а затем соберите элементы Stream в List.

List<Integer> list = set.stream().toList();Assertions.assertEquals(3, list.size());

2. Преобразовать список в набор

Нам может потребоваться создать HashSet из указанного ArrayList, когда мы хотим удалить дубликаты из списка, поскольку наборы не допускают дубликатов элементов.

Давайте начнем с создания экземпляра List, а затем преобразуем его в Set. Список содержит 7 элементов, но только 4 уникальных элемента. Поэтому размер Set должен быть 4 в каждом методе.

List list = List.of(1, 2, 3, 3, 3, 5, 5);

2.1 Использование конструктора множеств

Подобно предыдущему примеру, мы можем использовать конструктор HashSet(collection) для преобразования и инициализации HashSet с элементами из ArrayList.

Set set = new HashSet(list);Assertions.assertEquals(4, set.size());

2.2 Использование Set.addAll()

Set.addAll(list) добавляет все элементы указанной коллекции в этот набор, если они еще не присутствуют.

Set set = new HashSet();set.addAll(list);Assertions.assertEquals(4, set.size());

2.3 Использование потока

Подобно предыдущему разделу, мы можем преобразовать набор в список с помощью Stream следующим образом:

Set<Integer> set = list.stream().collect(Collectors.toSet());Assertions.assertEquals(4, set.size());

Подробнее: Документация по ArrayList Java и Документация по HashSet Java

Прокрутить вверх