Pages

Friday, November 26, 2021

Java - Converting between List and Set (6 ways)

1. Overview

In this article, We'll learn how to convert between List and Set objects. First, start with the basic java API methods, JDK 8 and above.

Finally, we'll learn how to convert List to Set and Set to List using Guava and apache commons API's.

In the previous article, we have discussed the conversion between List and Map objects.

Java - Converting between List and Set (6 ways)



2. Java - Convert List to Set


Converting List to Set can be done in many ways. let us start with the simple plain java and then next other ways.

All 6 ways are shown in the below single example.

A) Using Set.addAll() method
B) Using HashSet constructor
C) Java 8 Stream api
D) Java 10 api - Set.copyof()
E) Guava api
F) Apache commons

Example 1

package com.javaprogramto.convert.listset;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;

import com.google.common.collect.Sets;

public class ConvertListToSetExamples {

	public static void main(String[] args) {

		// List creation
		List<String> vowels = Arrays.asList("A", "E", "I", "O", "U");
		System.out.println("Original list values - " + vowels);

		// Way - 1 Using Set.addAll()
		Set<String> set1 = new HashSet<>();
		set1.addAll(vowels);

		System.out.println("set1 using set.addAll - " + set1);

		// Way - 2 Using Set constructor
		Set<String> set2 = new HashSet<>(vowels);

		System.out.println("set2 using set constructor - " + set2);

		// Way - 3 Using Java 8 stream api
		Set<String> set3 = vowels.stream().collect(Collectors.toCollection(HashSet::new));

		System.out.println("set3 using java 8 api - " + set3);

		// Way - 4 Using Java 10 api
		Set<String> set4 = Set.copyOf(vowels);

		System.out.println("set4 using java 10 api - " + set4);

		// Way - 5 Using guava api
		Set<String> set5 = Sets.newHashSet(vowels);

		System.out.println("set5 using guava api - " + set5);

		// Way - 6 Using apache commons api
		Set<String> set6 = new HashSet<>();
		CollectionUtils.addAll(set6, vowels);

		System.out.println("set5 using apache commons  api - " + set6);
	}
}

Output
Original list values - [A, E, I, O, U]
set1 using set.addAll - [A, E, U, I, O]
set2 using set constructor - [A, E, U, I, O]
set3 using java 8 api - [A, E, U, I, O]
set4 using java 10 api - [A, U, E, O, I]
set5 using guava api - [A, E, U, I, O]
set5 using apache commons  api - [A, E, U, I, O]
We could see the same values for all set instances generated by various ways.

3. Java - Convert Set to List


Next, we will see the different examples to convert a set of integers to a list of integers in 6 ways.

The below examples have used the following methods

A) Using List.addAll() method
B) Using ArrayList constructor
C) Java 8 Stream api
D) Java 10 api - List.copyof()
E) Guava api
F) Apache commons

Example 2

package com.javaprogramto.convert.listset;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

public class ConvertSetToListExamples {

	public static void main(String[] args) {

		// Set creation
		Set<Integer> numbers = new HashSet<>();
		numbers.add(10);
		numbers.add(20);
		numbers.add(30);
		numbers.add(40);
		numbers.add(50);

		System.out.println("Original set values - " + numbers);

		// Way - 1 Using List.addAll()
		List<Integer> list1 = new ArrayList<>();
		list1.addAll(numbers);

		System.out.println("list1 using list.addAll - " + list1);

		// Way - 2 Using List constructor
		List<Integer> list2 = new ArrayList<>(numbers);

		System.out.println("list2 using set constructor - " + list2);

		// Way - 3 Using Java 8 stream api
		List<Integer> list3 = numbers.stream().collect(Collectors.toList());

		System.out.println("list3 using java 8 api - " + list3);

		// Way - 4 Using Java 10 api
		List<Integer> list4 = List.copyOf(numbers);

		System.out.println("list4 using java 10 api - " + list4);

		// Way - 5 Using guava api
		List<Integer> list5 = Lists.newArrayList(numbers);

		System.out.println("list5 using guava api - " + list5);

		// Way - 6 Using apache commons api
		List<Integer> list6 = new ArrayList<>();
		CollectionUtils.addAll(list6, numbers);

		System.out.println("list6 using apache commons  api - " + list6);
	}
}

Output

Original set values - [50, 20, 40, 10, 30]
list1 using list.addAll - [50, 20, 40, 10, 30]
list2 using set constructor - [50, 20, 40, 10, 30]
list3 using java 8 api - [50, 20, 40, 10, 30]
list4 using java 10 api - [50, 20, 40, 10, 30]
list5 using guava api - [50, 20, 40, 10, 30]
list6 using apache commons  api - [50, 20, 40, 10, 30]

4. Conclusion


In this article, we've seen how conversion can be done between List and Set objects in java.

Examples are simplified to show in the single program for better comparing each methodology.



HashSet Examples

No comments:

Post a Comment

Please do not add any spam links in the comments section.