Converting Between an Array and a Set in Java

1. Overview

In this short article we’re going to look at converting between an array and a Set – first using plain java, then Guava and the Commons Collections library from Apache.

2. Convert Array to a Set

2.1. Using Plain Java

Let’s first look at how to turn the array to a Set using plain Java:

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

Alternatively, the Set can be created first and then filled with the array elements:

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

2.2. Using Google Guava

Next, let’s look at the Guava conversion from array to Set:

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

2.3. Using Apache Commons Collections

Finally, let’s do the conversion using the Commons Collection library from Apache:

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

3. Convert Set to Array

3.1. Using Plain Java

Now let’s look at the reverse – converting an existing Set to an array:

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

Note, that toArray(new T[0]) is the preferred way to use the method over the toArray(new T[size]). As Aleksey Shipilëv proves in his blog post, it seems faster, safer, and cleaner.

3.2. Using Guava

Next – the Guava solution:

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

Notice that we’re using the Ints API from Guava, so this solution is specific to the data type that we’re working with.

4. Conclusion

The implementation of all these examples and code snippets can be found over on Github – this is a Maven-based project, so it should be easy to import and run as it is.

Related posts:

Spring Boot Application as a Service
Create a Custom Auto-Configuration with Spring Boot
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Remove All Occurrences of a Specific Value from a List
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Implement Counting Sort
Java Program to Implement Stein GCD Algorithm
Configure a RestTemplate with RestTemplateBuilder
The XOR Operator in Java
Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
Spring Boot Change Context Path
Java Program to Implement Radix Sort
Hướng dẫn Java Design Pattern – Strategy
Java Program to Implement Bucket Sort
Quick Intro to Spring Cloud Configuration
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Java Program to Implement the Program Used in grep/egrep/fgrep
Convert Character Array to String in Java
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Overview of the java.util.concurrent
Serialize Only Fields that meet a Custom Criteria with Jackson
Custom JUnit 4 Test Runners
Java Program to Implement Maximum Length Chain of Pairs
XML Serialization and Deserialization with Jackson
Dockerizing a Spring Boot Application
Guide to Spring @Autowired
Java Streams vs Vavr Streams
An Introduction to Java.util.Hashtable Class
An Intro to Spring Cloud Vault
Java Program to Perform the Sorting Using Counting Sort
Java Program to Implement Adjacency List
Java Program to Implement the Hill Cypher