This post will discuss how to convert a list to an array in Java.
1. Using List.toArray[] method
List interface provides the toArray[] method that returns an Object array containing the list elements.
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; Object[] array = list.toArray[]; System.out.println[Arrays.toString[array]]; |
The JVM doesnt know the desired object type, so the toArray[] method returns an Object[]. We can pass a typed array to the overloaded toArray[T[] a] method to let JVM know your desired object type.
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = list.toArray[new String[list.size[]]]; System.out.println[Arrays.toString[array]]; |
We can also pass an empty array [or array of any size] of the specified type, and JVM will allocate the necessary memory:
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = list.toArray[new String[0]]; System.out.println[Arrays.toString[array]]; |
2. Using Java 8
In Java 8, we can use Stream to convert a list to an array. The idea is to convert the given list to stream using the List.stream[] method and uses the Stream.toArray[] method to return an array containing the stream elements. There are two ways to do so:
⮚ Using Streams with method reference
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = list.stream[].toArray[String[]::new]; System.out.println[Arrays.toString[array]]; |
⮚ Using Streams with lambda expression
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = list.stream[].toArray[n -> new String[n]]; System.out.println[Arrays.toString[array]]; |
3. Using Guava Library
⮚ Using FluentIterable class
The FluentIterable is an expanded Iterable API that provides similar functionality as Java 8s streams library in a slightly different way. The idea is to get a fluent iterable that wraps an iterable list and returns an array containing all its elements in iteration order.
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = FluentIterable.from[list].toArray[String.class]; System.out.println[Arrays.toString[array]]; |
⮚ Using Iterables class
Guavas Iterables class also provides the toArray[] method that copies an iterables elements into an array.
1 2 3 | List list = Arrays.asList["C", "C++", "Java"]; String[] array = Iterables.toArray[list, String.class]; System.out.println[Arrays.toString[array]]; |
Thats all about converting List to array in Java.