Core Java

Java Convert a List to Array And Vice-Versa

Introduction:

In this article, we’ll quickly learn how to convert a Java List (say an ArrayList) to an array and vice-versa. If you wish to learn more about an ArrayList in general, feel free to read our article on Java ArrayLists.

Meanwhile, let’s get going!

Convert Java List to Array:

Converting a Java List to an array is very simple and straight-forward. We can use one of the two available flavors of the toArray() method:

//Returns an Object-type array
Object[] toArray()

//Returns an array of type T
T[] toArray(T[] array)

Let’s try them out:

List<Integer> list = Arrays.asList(1, 2, 3, 4);

Object[] arrayOfObjects = list.toArray();
Integer[] arrayOfIntegers = list.toArray(new Integer[list.size()]);

The toArray(T[] array) method accepts as well as returns an array. The main purpose of passing in an array is to inform the type of an array that’s to be returned:

  • If the passed-in array has enough space, then the elements are stored in the same array and a reference to that array is returned
  • If it has more space than the number of elements, the array is first populated with the list elements and the remaining values are populated as null
  • Or else, if it doesn’t have enough space to store the elements, a new array of the same type and sufficient size is created, filled-in and returned

Convert Java Array to List:

To convert an array to a List in Java, we can opt one of the following approaches:

1. Naive Approach(Iteration):

One easy way is to iterate through all the array elements and add them to a newly created List:

public <T> List<T> convertArrToList(T[] array) {
    List<T> list = new ArrayList<>();
    for(T element : array) {
        list.add(element);
    }
    return list;
}

We can use the above generic method to easily convert an array of type T:

Integer[] arr = {1, 2, 3};
List<Integer> list = c.convertArrToList(arr);

2. Arrays.asList():

We can also use the asList() method in the java.util.Arrays class to quickly construct a List:

public <T> List<T> convertArrToList(T[] array) {
    return Arrays.asList(array);
}

This method accepts the array as its argument.

3. Collections.addAll():

As we know, java.util.Collections offer the addAll(Collection c, T… elements) method which adds all the elements to the given collection c.

Since List inherits from the Collection interface, we can use this method to our advantage:

public <T> List<T> convertArrToList(T[] array) {
    List<T> list = new ArrayList<>();
    Collections.addAll(list, array);
    return list; 
}

4. Java 8 Streams:

Java 8 onwards, we can first open a stream over a Java array and then collect its elements in a List using Java Stream Collectors:

public <T> List<T> convertArrToList(T[] array) {
    return Arrays.stream(array).collect(Collectors.toList()); 
}

For an array of primitives, we’ll have something like:

int[] array = new int[] { 1, 2, 3 };
List<Integer> list = Arrays.stream(array)
                       .boxed()
                       .collect(Collectors.toList());

Conclusion:

In this tutorial, we looked at how to convert a Java List to an array. We also covered the other scenario of converting an array to a List in Java.

Be the First to comment.

Leave a Comment

Your email address will not be published. Required fields are marked *