小编典典

在Java中将列表转换为数组

all

如何在 Java 中将a 转换List为a?Array

检查下面的代码:

ArrayList<Tienda> tiendas;
List<Tienda> tiendasList; 
tiendas = new ArrayList<Tienda>();

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

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


阅读 272

收藏
2022-03-04

共1个答案

小编典典

任何一个:

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

要么:

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

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

List<Integer> 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
中可能更快)。

2022-03-04