我正在审查一段看起来像这样的代码:
public WrappedItem[] processItems(Item[] items)
{
List<WrappedItem> wrappedItems = new ArrayList<>();
for (Item item : items)
{
/* …do something with the item… */
wrappedItems.add(WrappedItem.wrap(item));
}
return wrappedItems.toArray(new WrappedItem[0]);
}
创建一个列表,以便可以使用增强的for循环,然后将其转换为要返回的数组。
从性能和代码风格的角度来看,这会更好吗?
public WrappedItem[] processItems(Item[] items)
{
WrappedItem[] wrappedItems = WrappedItem[items.length];
for (int i = 0; i < items.length; i++)
{
Item item = items[i]
/* …do something with the item… */
wrappedItems[i] = WrappedItem.wrap(item);
}
return wrappedItems;
}
最佳答案
没有理由不能简单地直接构造一个数组并使用高级的for循环:
public WrappedItem[] processItems(Item[] items)
{
WrappedItem[] wrappedItems = WrappedItem[items.length];
int i = 0;
for (Item item : items)
{
/* …do something with the item… */
wrappedItems[i++] = item;
}
return wrappedItems;
}