在Java中将列表转换为数组。
在Java中将列表转换为数组。
这个问题已经有答案了:
我该如何在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日
可以选择以下两种方式之一:
Foo[] array = list.toArray(new Foo[0]);
或:
Foo[] array = new Foo[list.size()]; list.toArray(array); // fill the array
请注意,这仅适用于引用类型的数组。对于原始类型的数组,请使用传统方式:
Listlist = ...; 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的最新更新以来,这个调用已经被内置化,使得空数组版本的性能与预定义大小的版本相同,有时甚至更好。对于并发或同步集合,传递预定义大小的数组是危险的,因为在 size 和 toArray 调用之间可能会出现数据竞争,如果集合在操作期间同时缩小,则可能在数组末尾产生额外的空值。
该检查允许遵循统一的风格:使用空数组(在现代Java中推荐使用)或使用预定义大小的数组(在旧的Java版本或非HotSpot基础的JVM中可能更快)。
表示一个 HTML 块引用元素的结束标签。