在Java中将“ArrayList <String>转换为”String “

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

 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()] 。 但是, 这篇博客文章显示,由于JVM优化,现在使用new String[0]会更好。

Java 8中的另一种select:

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

使用copyOf,ArrayList也可以完成数组。

您可以使用ListtoArray()方法:

 ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); String[] array = list.toArray(new String[list.size()]); 

或者您可以手动将元素添加到数组中:

 ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); String[] array = new String[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); } 

希望这可以帮助!

在Java 8中:

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

在需要对数据进行一些额外的操作的情况下,用户想要一个function,这种方法并不完美(因为它需要传递该元素的类作为第二个参数),但是工作原理是:

import java.util.ArrayList; import java.lang.reflect.Array;

 public class Test { public static void main(String[] args) { ArrayList<Integer> al = new ArrayList<>(); al.add(1); al.add(2); Integer[] arr = convert(al, Integer.class); for (int i=0; i<arr.length; i++) System.out.println(arr[i]); } public static <T> T[] convert(ArrayList<T> al, Class clazz) { return (T[]) al.toArray((T[])Array.newInstance(clazz, al.size())); } } 

generics解决scheme来隐藏任何List<Type> to String []

 public static <T> String[] listToArray(List<T> list){ String [] array = new String[list.size()]; for (int i =0 ; i<array.length;i++) array[i] = list.get(i).toString(); return array; } 

注意您必须override toString()方法。

 class Car{ private String name; public Car(String name){ this.name = name; } public String toString(){ return name; } } final List<Car> carList = new ArrayList<Car>(); carList.add(new Car("BMW")) carList.add(new Car("Mercedes")) carList.add(new Car("Skoda")) final String[] carArray = listToArray(carList); 
 List <String> list = ... String[] array = new String[list.size()]; int i=0; for(String s: list){ array[i++] = s; } 

您可以使用Iterator<String>来迭代ArrayList<String>的元素

代码:

  ArrayList<String> list = new ArrayList<>(); String[] array = new String[list.size()]; int i = 0; for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); i++) { array[i] = iterator.next(); } 

现在,您可以使用任何循环来从String[]检索元素。

通过使用ArrayList的toArray()方法,你可以得到0bject[] 。 将该Object[]String[]这里的示例代码:

 ArrayList<String> arr_List=new ArrayList<String>(); Object[] str_Arr=arr_List.toArray(); 

这就够了:

 int[] d = new int[list.size()]; for (int i = 0; i < list.size(); i++) { d[i] = list.get(i); }