您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将列表转换为Java中的数组

将列表转换为Java中的数组

要么:

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的更新较晚,因此此调用变得很有趣,与空大小版本相比,空数组版本的性能相同,有时甚至更好。同样,传递预大小的数组对于并发或同步集合也是危险的,因为在size和toArray 调用之间可能会发生数据争用 ,如果在操作过程中同时缩小了集合,则可能导致数组末尾出现额外的null。

此检查允许遵循统一的样式:使用空数组(在现代Java中建议使用)或使用预定大小的数组(在较早的Java版本或基于非HotSpot的JVM中可能更快)。

java 2022/1/1 18:15:12 有513人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶