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:

Java Program to Find the Longest Subsequence Common to All Sequences in a Set of Sequences
Lớp Properties trong java
Java Program to Implement Double Order Traversal of a Binary Tree
Tránh lỗi NullPointerException trong Java như thế nào?
An Intro to Spring Cloud Security
HttpClient Connection Management
The Order of Tests in JUnit
Hashing a Password in Java
A Guide to TreeMap in Java
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Implement Flood Fill Algorithm
HttpClient 4 – Follow Redirects for POST
Java Program to Implement Find all Back Edges in a Graph
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Java Program to Describe the Representation of Graph using Incidence Matrix
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Implement Fermat Factorization Algorithm
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Java – Write a Reader to File
Jackson Annotation Examples
So sánh ArrayList và Vector trong Java
Quick Intro to Spring Cloud Configuration
Java – Try with Resources
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Introduction to Liquibase Rollback
Toán tử instanceof trong java
Java Program to Implement IdentityHashMap API
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Removing all Nulls from a List in Java
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Java Program to Implement Disjoint Set Data Structure