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.

进一步阅读:

将Java中的Collection转换为ArrayList

Converting Java collections from one type to another is a common programming task. In this tutorial, we’ll convert any type of Collection to an ArrayList.

如何将Java中的List转换为Map类型

Converting List to Map is a common task. In this tutorial, we’ll cover several ways to do this.

将基础类型数组转为List

In this short tutorial, we’ll see how to convert an array of primitives to a List of objects of the corresponding type. Typically, we might try to use autoboxing in Java. However, as we’ll see in the next section, our intuition of how autoboxing works can often be erroneous.

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