java to string arraylist_在Java中转换'ArrayList<String> to ' String []'

回答(17)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

ArrayList arrayList = new ArrayList();

Object[] objectList = arrayList.toArray();

String[] stringArray = Arrays.copyOf(objectList,objectList.length,String[].class);

使用copyOf,ArrayList也可以完成 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

您可以将 toArray() 方法用于 List :

ArrayList list = new ArrayList();

list.add("apple");

list.add("banana");

String[] array = list.toArray(new String[list.size()]);

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

ArrayList list = new ArrayList();

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);

}

希望这可以帮助!

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Java 8中:

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Java 8中的替代方案:

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

List list = ...

String[] array = new String[list.size()];

int i=0;

for(String s: list){

array[i++] = s;

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

通过使用ArrayList的 toArray() 方法,您可以获得 0bject[] . 将 Object[] 转换为 String[] 这里示例代码:

ArrayList arr_List=new ArrayList();

Object[] str_Arr=arr_List.toArray();

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

您可以使用 Iterator 迭代 ArrayList 的元素:

ArrayList list = new ArrayList<>();

String[] array = new String[list.size()];

int i = 0;

for (Iterator iterator = list.iterator(); iterator.hasNext(); i++) {

array[i] = iterator.next();

}

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

List list = ..;

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

例如:

List list = new ArrayList();

//add some stuff

list.add("android");

list.add("apple");

String[] stringArray = list.toArray(new String[0]);

没有传递任何参数的 toArray() 方法返回 Object[] . 因此,您必须将数组作为参数传递,该数组将填充列表中的数据并返回 . 您也可以传递一个空数组,但也可以传递一个具有所需大小的数组 .

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果您的应用程序已在使用Apache Commons lib,您可以稍微修改接受的答案,以便每次都不创建新的空数组:

List list = ..;

String[] array = list.toArray(ArrayUtils.EMPTY_STRING_ARRAY);

// or if using static import

String[] array = list.toArray(EMPTY_STRING_ARRAY);

在 ArrayUtils 中还有一些预先分配的不同类型的空数组 .

我们也可以通过这种方式欺骗JVM为我们创建一个空数组:

String[] array = list.toArray(ArrayUtils.toArray());

// or if using static import

String[] array = list.toArray(toArray());

但这种方式确实没有优势,只是品味问题,IMO .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这就够了:

int[] d = new int[list.size()];

for (int i = 0; i < list.size(); i++) {

d[i] = list.get(i);

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

private String[] prepareDeliveryArray(List deliveryServices) {

String[] delivery = new String[deliveryServices.size()];

for (int i = 0; i < deliveryServices.size(); i++) {

delivery[i] = deliveryServices.get(i).getName();

}

return delivery;

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Java 11中,我们可以使用 Collection.toArray(generator) 方法 . 以下代码将创建一个新的字符串数组:

List list = List.of("one", "two", "three");

String[] array = list.toArray(String[]::new)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Java 8中,它可以使用

String[] arrayFromList = fromlist.stream().toArray(String[]::new);

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Generics 将任何 List 转换为 String [] 的解决方案:

public static String[] listToArray(List list) {

String [] array = new String[list.size()];

for (int i = 0; i < array.length; i++)

array[i] = list.get(i).toString();

return array;

}

Note 你必须 override toString() 方法 .

class Car {

private String name;

public Car(String name) {

this.name = name;

}

public String toString() {

return name;

}

}

final List carList = new ArrayList();

carList.add(new Car("BMW"))

carList.add(new Car("Mercedes"))

carList.add(new Car("Skoda"))

final String[] carArray = listToArray(carList);

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

您可以使用此方法将List转换为String数组:

Object[] stringlist=list.toArray();

完整的例子:

ArrayList list=new ArrayList<>();

list.add("Abc");

list.add("xyz");

Object[] stringlist=list.toArray();

for(int i = 0; i < stringlist.length ; i++)

{

Log.wtf("list data:",(String)stringlist[i]);

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

List list = List.of("x","y","z");

String[] arrayBeforeJDK11 = list.toArray(new String[0]);

String[] arrayAfterJDK11 = list.toArray(String[]::new); // similar to Stream.toArray

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果需要对数据进行一些额外的操作,用户想要一个函数,这种方法并不完美(因为它需要将元素的类作为第二个参数传递),但是有效:

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

public class Test {

public static void main(String[] args) {

ArrayList al = new ArrayList<>();

al.add(1);

al.add(2);

Integer[] arr = convert(al, Integer.class);

for (int i=0; i

System.out.println(arr[i]);

}

public static T[] convert(ArrayList al, Class clazz) {

return (T[]) al.toArray((T[])Array.newInstance(clazz, al.size()));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值