Convert ArrayList To a String Array Tag(s): Language


You can't convert directly an ArrayList to a String array. For example,
import java.util.List;
import java.util.ArrayList;

List<String> al = new ArrayList<String>();
al.add("a string");
String[] stringArr = new String[al.size()];
stringArr = (String []) al.toArray();
for (String s: stringArr) System.out.println("** " + s);
will throw > [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

To make it work, you need to give to the JVM an hint about the class type involved.

The solution can be

String[] stringArr = new String[al.size()];
stringArr = al.toArray(stringArr);  // give the target array as parameter to
                                    // to inform the JVM that we are using
                                    // a String array
for (String s: stringArr) System.out.println("** " + s);
or
String[] stringArr = al.toArray(new String[] {});
for (String s: stringArr) System.out.println("** " + s);

In Java 8,

import java.util.List;
import java.util.ArrayList;

public class ArrayTest {

   public static void main(String[] args) {
      List<String> al = new ArrayList<String>();
      al.add("a string");

      String[] stringArr = al.stream().toArray(String[]::new); // using Java 8 streams
      for (String s: stringArr) System.out.println("** " + s);
   }
}

blog comments powered by Disqus