Java toArray(T[]a)和toArray()之间的差异

Java toArray(T[]a)和toArray()之间的差异,java,list,toarray,Java,List,Toarray,我一直在学习如何使用java编程,但对于LinkedList的toArray(t[]a)和toArray()方法的区别,我还没有得到任何明确的解释。第二个简单地将LinkedList对象中的所有元素作为数组返回,对吗?但是,第一个呢 编辑: 我是说,我读了oracle的文档,上面说: 返回一个数组,该数组以正确的方式包含此列表中的所有元素 顺序(从第一个元素到最后一个元素);的运行时类型 返回的数组是指定数组的数组如果列表适合 指定的数组,它将在其中返回。否则,将创建一个新数组 使用指定数组的运

我一直在学习如何使用java编程,但对于
LinkedList
toArray(t[]a)
toArray()
方法的区别,我还没有得到任何明确的解释。第二个简单地将LinkedList对象中的所有元素作为数组返回,对吗?但是,第一个呢

编辑:

我是说,我读了oracle的文档,上面说:

返回一个数组,该数组以正确的方式包含此列表中的所有元素 顺序(从第一个元素到最后一个元素);的运行时类型 返回的数组是指定数组的数组如果列表适合 指定的数组,它将在其中返回。否则,将创建一个新数组 使用指定数组的运行时类型和 这张单子。如果列表符合指定的阵列,则有剩余空间 (即,数组中的元素多于列表中的元素) 紧跟在列表末尾的数组设置为null。(本 仅当调用方 知道列表不包含任何空元素。)

与toArray()方法一样,此方法充当 基于数组和基于集合的API。此外,该方法允许 精确控制输出数组的运行时类型,并且可能, 在某些情况下,可用于节省分配成本


我不明白粗体显示的句子的意思。

有两个区别:

  • 第一个返回
    T[]
    ,而第二个返回
    Object[]
  • 第一个接受数组作为参数,如果该数组足够大,它将使用该数组存储集合的元素,而不是创建新的元素

  • 假设您有一个
    列表
    ,并且希望将其转换为
    字符串[]
    。让我们看看两种方法的工作原理:

    List<String> source = new LinkedList<String>();
    // Fill in some data
    
    Object[] array1 = source.toArray();
    String[] array2 = source.toArray(new String[source.size()]);
    
    List source=newlinkedlist();
    //填写一些数据
    Object[]array1=source.toArray();
    String[]array2=source.toArray(新字符串[source.size()]);
    

    看到区别了吗?第一个只创建一个
    对象[]
    ,因为它不知道类型参数
    的类型,而第二个只填充您传递的
    字符串[]
    (这是您想要的)。您几乎总是需要使用第二种方法。

    使用
    String[]array3=(String[])source.toArray()怎么样?“我认为这不推荐,但为什么不呢?”我在另一个问题中发现。它可能会提供一些解释。请使用toArray(新字符串[0])。看见