Java List.toArray()方法的意外输出:为什么数组元素值并非预期?

java list.toarray()方法的意外输出:为什么数组元素值并非预期?

java list.toarray() 方法

list.toarray() 方法将集合转换为数组。但是,在使用该方法时,可能会出现意外的结果。

问题:

以下代码输出令人疑惑的数组值:

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

        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, 32, 1]

预计的输出应为:[12, 34, 56, null, null, null],但它却包含了一个意外的非空元素 32。这是为什么

答案:

阿里云-虚拟数字人 阿里云-虚拟数字人

阿里云-虚拟数字人是什么? …

阿里云-虚拟数字人 2 查看详情 阿里云-虚拟数字人

toarray() 方法文档指出:

如果数组可以容纳列表中的所有元素并留有空余(即,数组的元素比列表多),数组中紧跟在列表末尾后面的元素将设置为 null。

也就是说,当数组长度大于等于集合长度时,数组中紧跟在集合元素后面的第一个元素将被置为空。这在确定集合长度时很有用,前提是调用者知道集合不包含任何 null 元素。

实现:

以 arraylist 为例,其 toarray() 方法的实现如下:

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

结论:

在示例代码中,toarray() 方法将一个长度为 6 的数组传递给长度为 3 的列表,这导致数组中紧跟在列表元素后面的第一个元素 a[3](即 a[3])被置为空。数组的其他元素包含列表中的值。

以上就是Java List.toArray()方法的意外输出:为什么数组元素值并非预期?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/381583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 11:32:03
下一篇 2025年11月6日 11:35:35

相关推荐

发表回复

登录后才能评论
关注微信