在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也可以完成数组。
您可以使用List
的toArray()
方法:
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); }