在Java中,很长一段时间以来,当您想要将Collection转换为数组时,您可以执行以下操作:coll.toArray(new ItemObject[coll.size()])
。但是,在Android Studio中,我收到了警告。这是Android Studio提供的警告说明的全文:
有两种样式可以将集合转换为数组: 预定大小的数组(例如
c.toArray(new String[c.size()])
)或使用 空数组(如c.toArray(new String[0]
)。在较旧的Java版本中 建议使用预大小的数组,因为反射调用是 创建适当大小的数组所必需的速度非常慢。然而 自从OpenJDK 6的最新更新以来,此调用引起了人们的注意, 空数组版本的性能相同,有时甚至 比预大小版本更好。还通过了预尺寸 数组对于并发或同步集合是危险的,因为 在size和toArray调用之间可能发生数据争夺 如果集合是,则在数组末尾产生额外的null 在手术过程中同时缩小。该检查允许 遵循统一的样式:使用空数组(即 建议在现代Java中使用)或使用预定大小的数组(可能是 在较旧的Java版本或非基于HotSpot的JVM中更快。
但是,这种解释仅考虑Java虚拟机HotSpot,因此我想知道:此警告是否也适用于Android?上面提到的那些改进是否也得以实施?在Android上将集合转换为数组的最快方法是什么?
编辑:我知道现在没什么大不了的,但我仍然想知道。 =)