java 中的 list.toarray

当我们使用 list.toarray 方法将 list 转换为数组时,可能会遇到与预期不同的结果。例如:

list list = list.of(12, 34, 56);
integer[] array = list.toarray(new integer[]{1, 2, 1, 43, 32, 1});
system.out.println(arrays.tostring(array));
登录后复制

预期输出: [12, 34, 56, null, null, null]

实际输出: [12, 34, 56, null, 32, 1]

立即学习“Java免费学习笔记(深入)”;

为什么会这样呢?

让我们深入了解 toarray 方法的文档说明:

"如果数组中的元素比列表多(即数组具有比列表更多的元素),数组中紧跟在列表末尾后的元素将设置为 null。(这在当调用者知道列表不包含任何 null 元素的情况下确定列表的长度时很有用。)"

这意味着,如果数组的元素比列表多,则紧跟在列表末尾后面的第一个元素将被设置为 null。这有助于在调用者得知列表不包含任何 null 元素时推断出列表的真实长度。

在给出的代码示例中,数组的元素(6 个)比列表中的元素(3 个)多。因此,列表末尾后面的第一个数组元素被设置为 null,从而产生实际的输出结果。

这个行为在 arraylist 的实现中得到证明:

public  T[] toArray(T[] a) {
    if (a.length < size> size)//如果数组的长度大于列表,把列表后面的第一个位置置为null
        a[size] = null;
    return a;
}
登录后复制

以上就是Java List.toArray方法:为什么传入数组比List长时结果并非预期?的详细内容,更多请关注慧达安全导航其它相关文章!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部