【发布时间】:2011-09-26 09:37:22
【问题描述】:
我只是在看List接口中定义的方法:
以正确的顺序返回一个包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。 如果列表适合指定的数组并有剩余空间(即,数组的元素多于列表),则数组中紧跟集合末尾的元素设置为 null。仅当调用者知道列表不包含任何空元素时,这对确定列表的长度很有用。
<T> T[] toArray(T[] a);
我只是想知道为什么它是这样实现的,基本上如果你将一个长度为
此外,如果您使用列表的大小向它传递一个足够长的数组,如果返回与对象相同的对象 - 实际上返回它没有意义,因为它是相同的对象,但为了清楚起见可以。
问题是我认为这会导致代码效率低下,我认为 toArray 应该简单地接收类并返回带有内容的新数组。
有什么理由不这样编码吗?
【问题讨论】:
-
您认为效率低下到底是什么?
-
如果你传递一个大小为
-
请注意,对于大多数用途,您可以拥有
private static final T[] = new T[0],如果数组大小未知,则使用它,以最小化开销。
标签: java list generics toarray