在Java中将列表转换为数组。

33 浏览
0 Comments

在Java中将列表转换为数组。

这个问题已经有答案了

如何在Java中将 \'ArrayList\' 转换为 \'String[]\'

我该如何在Java中将一个 List 转换为一个 Array

请查看下面的代码:

ArrayList tiendas;
List tiendasList; 
tiendas = new ArrayList();
Resources res = this.getBaseContext().getResources();
XMLParser saxparser =  new XMLParser(marca,res);
tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();
this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);  

我需要使用 tiendasList 的值填充数组 tiendas

admin 更改状态以发布 2023年5月23日
0
0 Comments

Java 8 中的另一种选择:

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

从 Java 11 开始:

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

0
0 Comments

可以选择以下两种方式之一:

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

或:

Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array


请注意,这仅适用于引用类型的数组。对于原始类型的数组,请使用传统方式:

List list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);


更新:

现在建议使用 list.toArray(new Foo[0]);,而不是 list.toArray(new Foo[list.size()]);

来自JetBrains Intellij Idea的检查:

将集合转换为数组有两种风格:使用预定义大小的数组(例如 c.toArray(new String[c.size()])),或使用一个空数组(例如 c.toArray(new String[0]))。在旧的Java版本中,推荐使用预定义大小的数组,因为反射调用需要创建正确大小的数组,这非常缓慢。然而,自OpenJDK 6的最新更新以来,这个调用已经被内置化,使得空数组版本的性能与预定义大小的版本相同,有时甚至更好。对于并发或同步集合,传递预定义大小的数组是危险的,因为在 sizetoArray 调用之间可能会出现数据竞争,如果集合在操作期间同时缩小,则可能在数组末尾产生额外的空值。

该检查允许遵循统一的风格:使用空数组(在现代Java中推荐使用)或使用预定义大小的数组(在旧的Java版本或非HotSpot基础的JVM中可能更快)。

表示一个 HTML 块引用元素的结束标签。

0