Convert Set to List in Java and Vice-versa

In Java, List and Set are Collections types to store elements. List is an index-based ordered collection, and Set is an unordered collection. List allows duplicate elements, but Set contains only unique elements. Both collection types are quite different and have their own usecases.

In this Java tutorial, Learn to convert a specified Set to a List. Also, learn to reverse convert List to Set, a useful method to remove duplicate elements from a list.

1. Convert Set to List

We will be using the following Set to List type in different ways.

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

1.1. Using List Constructor

To convert a given Set to a List, we can use the ArrayList constructor and pass HashSet as the constructor argument. It will copy all elements from HashSet to the newly created ArrayList.

ArrayList<Integer> arrayList = new ArrayList(set);

Assertions.assertEquals(3, arrayList.size());

1.2. Using List.addAll()

Another useful method to get a List with Set elements is to create an empty list instance and use its addAll() method to add all the elements of the Set to List.

ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.addAll(set);

Assertions.assertEquals(3, arrayList.size());

1.3. Using Stream

First, convert the Set to Stream, and then collect the Stream elements to List.

List<Integer> list = set.stream().toList();

Assertions.assertEquals(3, list.size());

2. Convert List to Set

We might need to create a HashSet from a specified ArrayList when we want to remove duplicates from the list because sets do not allow duplicate items.

Let us begin with creating a List instance, and then we will convert it to the Set. The list contains 7 items, but only 4 unique items. So the Set size must be 4 in each method.

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

2.1. Using Set Constructor

Similar to the previous example, we can use the constructor HashSet(collection) to convert to initialize a HashSet with the items from the ArrayList.

Set set = new HashSet(list);

Assertions.assertEquals(4, set.size());

2.2. Using Set.addAll()

The Set.addAll(list) adds all of the elements in the specified collection to this set if they’re not already present.

Set set = new HashSet();
set.addAll(list);

Assertions.assertEquals(4, set.size());

2.3. Using Stream

Similar to the previous section, we can convert a set to list using the Stream as follows:

Set<Integer> set = list.stream().collect(Collectors.toSet());

Assertions.assertEquals(4, set.size());

Happy Learning !!

Read More: ArrayList Java Docs and HashSet Java Docs

Comments

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.