gpt4 book ai didi

java - T[] toArray(T[] a) 实现

转载 作者:行者123 更新时间:2023-12-01 23:50:56 24 4
gpt4 key购买 nike

我正在创建一个实现 List 的 SortedList 类。

如果我理解正确,方法 toArray(T[] a) 将对象数组作为参数并返回这些对象的排序数组。

在java文档中,我们可以读到,如果Collection长度大于sortedList,则使用合适的大小创建一个新数组,如果collection长度小于sortedList,则使用该集合的最后一个对象之后的对象集合设置为 null。

我正在从事的项目不允许我在排序列表中使用空值,因此我以不同的方式实现该方法,使用新的sortedList和toArray()方法:

public <T> T[] toArray(T[] a)
{
SortedList sort = new SortedList();

for(Object o : a)
{
sort.add(o);
}

return (T[])sort.toArray();
}

这是实现此方法的好方法还是我应该预期这样使用它会出现错误?

感谢您的宝贵时间。

最佳答案

首先是一个建议:

如果你想要SortedList实现List接口(interface),扩展 AbstractList 是个好主意而不是实现 List直接地。 AbstractList已经定义了许多必要的方法,包括您遇到问题的方法。最List -Java 平台库中的实现也扩展了 AbstractList .

如果您仍想实现List直接,这是该方法应该执行的操作:

a是指定的数组。

  • 如果a足够大,用 SortedList 中的元素填充它(按正确的顺序)而不关心 a 中之前的内容.
  • 如果 a 有空余空间填写完毕后,设置a[size()] = null 。那么用户就会知道列表在哪里结束,除非列表包含 null -元素。
  • 如果列表不适合 a ,创建一个类型为 T 的新数组大小与列表相同,然后填充新的。
  • 返回您填充的数组。如果您填写a ,返回a 。如果您创建了一个新数组,请返回新数组。

此方法有用的原因有两个:

  • 数组不一定是 Object 类型,但是属于 T 类型由用户决定(只要类型有效)。
  • 用户可能希望节省内存并重新使用数组,而不是分配更多内存来创建新数组。

Here Java 文档是如何描述该方法的。

关于java - T[] toArray(T[] a) 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16321308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com