在 Java 中将 'ArrayList<String> 转换为 'String[]'
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4042434/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Converting 'ArrayList<String> to 'String[]' in Java
提问by Alex
How might I convert an ArrayList<String>
object to a String[]
array in Java?
我如何将ArrayList<String>
对象转换为String[]
Java 中的数组?
采纳答案by Bozho
List<String> list = ..;
String[] array = list.toArray(new String[0]);
For example:
例如:
List<String> list = new ArrayList<String>();
//add some stuff
list.add("android");
list.add("apple");
String[] stringArray = list.toArray(new String[0]);
The toArray()
method without passing any argument returns Object[]
. So you have to pass an array as an argument, which will be filled with the data from the list, and returned. You can pass an empty array as well, but you can also pass an array with the desired size.
toArray()
不传递任何参数的方法返回Object[]
。所以你必须传递一个数组作为参数,它将用列表中的数据填充并返回。您也可以传递一个空数组,但您也可以传递一个具有所需大小的数组。
Important update: Originally the code above used new String[list.size()]
. However, this blogpostreveals that due to JVM optimizations, using new String[0]
is better now.
重要更新:最初使用上面的代码new String[list.size()]
。然而,这篇博文揭示了由于 JVM 优化,new String[0]
现在使用更好。
回答by HZhang
List <String> list = ...
String[] array = new String[list.size()];
int i=0;
for(String s: list){
array[i++] = s;
}
回答by Rajesh Vemula
ArrayList<String> arrayList = new ArrayList<String>();
Object[] objectList = arrayList.toArray();
String[] stringArray = Arrays.copyOf(objectList,objectList.length,String[].class);
Using copyOf, ArrayList to arrays might be done also.
也可以使用 copyOf、ArrayList 到数组。
回答by Vitalii Fedorenko
An alternative in Java 8:
Java 8 中的替代方案:
String[] strings = list.stream().toArray(String[]::new);
Java 11+:
Java 11+:
String[] strings = list.toArray(String[]::new);
回答by codecubed
You can use the toArray()
method for List
:
您可以将该toArray()
方法用于List
:
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
String[] array = list.toArray(new String[list.size()]);
Or you can manually add the elements to an array:
或者您可以手动将元素添加到数组中:
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);
}
Hope this helps!
希望这可以帮助!
回答by Mike Shauneu
In Java 8:
在 Java 8 中:
String[] strings = list.parallelStream().toArray(String[]::new);
回答by Roberto Attias
in case some extra manipulation of the data is desired, for which the user wants a function, this approach is not perfect (as it requires passing the class of the element as second parameter), but works:
如果需要对数据进行一些额外的操作,用户想要一个函数,这种方法并不完美(因为它需要将元素的类作为第二个参数传递),但有效:
import java.util.ArrayList; import java.lang.reflect.Array;
导入 java.util.ArrayList; 导入 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()));
}
}
回答by Khaled Lela
Genericssolution to covert any List<Type>
to String []
:
将任何转换List<Type>
为的泛型解决方案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;
}
NoteYou must override toString()
method.
注意你必须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);
回答by Vatsal Chavda
You can use Iterator<String>
to iterate the elements of the ArrayList<String>
:
您可以使用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();
}
Now you can retrive elements from String[]
using any Loop.
现在您可以String[]
使用任何循环检索元素。
回答by Denis Fedak
private String[] prepareDeliveryArray(List<DeliveryServiceModel> deliveryServices) {
String[] delivery = new String[deliveryServices.size()];
for (int i = 0; i < deliveryServices.size(); i++) {
delivery[i] = deliveryServices.get(i).getName();
}
return delivery;
}