如何在 Java 中将a 转换List为a?Array
List
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。
tiendas
tiendasList
任何一个:
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()]);。
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 的更新较晚,这个调用被内化了,使得空数组版本的性能与预先调整大小的版本相同,有时甚至更好。此外,传递预先确定大小的数组对于并发或同步集合也是危险的,因为在 size 和 toArray 调用之间可能存在数据竞争,如果在操作期间集合同时收缩,这可能会导致数组末尾出现额外的空值。 此检查允许遵循统一的样式:使用空数组(在现代 Java 中推荐)或使用预先确定大小的数组(在较旧的 Java 版本或基于非 HotSpot 的 JVM 中可能更快)。
将集合转换为数组有两种方式:使用预先确定大小的数组(如 c.toArray(new String[c.size()]) 或使用空数组(如 c.toArray(new String[ 0]) 。
在较旧的 Java 版本中,建议使用预先确定大小的数组,因为创建适当大小的数组所必需的反射调用非常慢。然而,由于 OpenJDK 6 的更新较晚,这个调用被内化了,使得空数组版本的性能与预先调整大小的版本相同,有时甚至更好。此外,传递预先确定大小的数组对于并发或同步集合也是危险的,因为在 size 和 toArray 调用之间可能存在数据竞争,如果在操作期间集合同时收缩,这可能会导致数组末尾出现额外的空值。
此检查允许遵循统一的样式:使用空数组(在现代 Java 中推荐)或使用预先确定大小的数组(在较旧的 Java 版本或基于非 HotSpot 的 JVM 中可能更快)。