1. Overview

In this quick tutorial, we’re going to learn how to convert between an Array and a List using core Java libraries, Guava and Apache Commons Collections.

This article is part of the “Java – Back to Basic” series here on Baeldung.

2. Convert List to Array

2.1. Using Plain Java

Let’s start with the conversion from List to Array using plain Java:

@Test
public void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() {
    List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
    Integer[] targetArray = sourceList.toArray(new Integer[0]);
}

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

2.2. Using Guava

Now let’s use the Guava API for the same conversion:

@Test
public void givenUsingGuava_whenListConvertedToArray_thenCorrect() {
    List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    int[] targetArray = Ints.toArray(sourceList);
}

3. Convert Array to List

3.1. Using Plain Java

Let’s start with the plain Java solution for converting the array to a List:

@Test
public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Arrays.asList(sourceArray);
}

Note that this is a fixed-sized list that will still be backed by the array. If we want a standard ArrayList, we can simply instantiate one:

List<Integer> targetList = new ArrayList<Integer>(Arrays.asList(sourceArray));

3.2. Using Guava

Now let’s use the Guava API for the same conversion:

@Test
public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Lists.newArrayList(sourceArray);
}

3.3. Using Commons Collections

Finally, let’s use the Apache Commons Collections CollectionUtils.addAll API to fill in the elements of the array in an empty List:

@Test 
public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() { 
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; 
    List<Integer> targetList = new ArrayList<>(6); 
    CollectionUtils.addAll(targetList, sourceArray); 
}

4. Conclusion

The implementation of all of 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.


« 上一篇: Java周报 21