Java List toArray(T [] a)实现

我只是在查看List接口中定义的方法:

返回以正确顺序包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则将其返回。否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。如果列表适合指定的数组并有剩余空间(即,数组中的元素多于列表),则紧接集合结束后的数组中的元素设置为null。仅当调用者知道列表不包含任何null元素时,这才对确定列表的长度很有用。

<T> T[] toArray(T[] a);

我只是想知道为什么要这样实现,基本上,如果您将长度为<的数组传递给list.size(),它将简单地创建一个新数组并返回它。因此,在method参数中创建新的Array

Object是没有用的。

另外,如果您使用列表的大小将数组传递给数组足够长的时间,并且返回与该对象相同的对象,则返回该对象实在没有意义,因为它是同一对象,但为了清楚起见也可以。

问题是我认为这会导致代码效率低下,我认为toArray应该只接收该类,并只返回包含内容的新数组。

有没有任何理由为什么不这样编码?

回答:

正如其他人所提到的,有两个不同的原因:

  • 您需要以某种方式传递类型,并且传递指定类型的数组并不是一种合理的方法。诚然,如果您也为了速度而在您的Class中传递了一个版本,那就太好了。
  • 如果要重用数组,可以继续传递相同的数组,而不必每次都创建一个新数组。如果您需要多次这样做,可以节省时间和内存,并节省GC问题

以上是 Java List toArray(T [] a)实现 的全部内容, 来源链接: utcz.com/qa/428553.html

回到顶部