在 Java 中怎样将 ArrayList<String>转换为 String []

问题

我怎样才能在 Java 中将 ArrayList<String>对象转换为String[]数组?


#1 热门回答(1479 赞)

List<String> list = ..;
String[] array = list.toArray(new String[0]);

例如:

List<String> list = new ArrayList<String>();
//add some stuff
list.add("android");
list.add("apple");
String[] stringArray = list.toArray(new String[0]);

不传递任何参数的toArray()方法返回Object []。所以你必须传递一个数组作为参数,这个参数将被列表中的数据填充并返回。你可以传递一个空数组,也可以传递一个具有所需大小的数组。

重要更新

最初的代码使用new String[list.size()]。但是,this blogpost 显示由于JVM优化,现在使用 new String[0]更好。


#2 热门回答(123 赞)

Java 8中的另一种选择:

String[] strings = list.stream().toArray(String[]::new);

#3 热门回答(23 赞)

ArrayList<String> arrayList = new ArrayList<String>();
Object[] objectList = arrayList.toArray();
String[] stringArray =  Arrays.copyOf(objectList,objectList.length,String[].class);

使用copyOf,ArrayList 也可以实现。