
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
微信扫一扫
支付宝扫一扫