gpt4 book ai didi

java - [JAVA]我将Integer类型的LinkedList转换为Array。转换后如何确定数组的大小

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:06 25 4
gpt4 key购买 nike

我创建了一个 LinkedList 并向其中添加了以下元素。

List<Integer> integers = new LinkedList<>();
integers.add(0);
integers.add(45);
integers.add(95);
integers.add(5);
integers.add(12);

Integer[] arr = integers.toArray(new Integer[3]);
System.out.println(arr.length);
for(int c:arr) {
System.out.println(c);
}

当我将数组的长度限制为 3 时,数组的长度打印为 5。所有元素都显示在输出中。

然后,如果我尝试将第 6 个元素添加到数组中,它会给出

java.lang.ArrayIndexOutOfBoundsException: 6

这里数组的长度是如何确定的?为什么 Array 会出现异常行为?

最佳答案

不出所料,只需阅读 List.toArray() 的 javadoc :

Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array. If the list fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this list.

因此:当您使用此方法时,它会计算出:列表有 5 个元素,而不是 3 个。因此它创建了一个可容纳 5 个项目的数组,因此 arr.lenght 为 5。

当然,数组索引从 0 到 4,因此当您使用 arr[5] 时,您就“一次性” - 超出了数组的边界。

这就是全部内容。

关于java - [JAVA]我将Integer类型的LinkedList转换为Array。转换后如何确定数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45879617/

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