ArrayList<Student> alist = new ArrayList();
// object type is student
//arraylist contains student objects
Student[] arr= new Student[un.size()];
for(int i = 0; i <= alist .size(); i++){
them[i] = arr.get(i);
}
我想要做的是创建一个学生数组而不会使数组超出范围异常。
答案 0 :(得分:3)
在Java(以及大多数语言)中,数组从零开始。如果您有一个大小为N
的数组,则索引将来自[0,N-1](总大小为N
)。
i <= alist .size()
应该是
i < alist .size()
↑
No "="
为什么不简单地使用toArray
?
答案 1 :(得分:1)
你非常接近。只要i
小于或等于alist.size()
,您的for循环条件就会循环。如果你这样做,你将永远运行一个。
例如,如果alist
中只有一个项目,那么你的大小将为1,但你真的只想循环到0。
改变这个:
for(int i = 0; i <= alist.size() ; i++)
对此:
for(int i = 0; i < alist.size() ; i++)
答案 2 :(得分:1)
你真正需要的是them = alist.toArray(new Student[them.length])
。这将简单地复制数据。
答案 3 :(得分:0)
ArrayList<Student> alist = new ArrayList();
// object type is student
//arraylist contains student objects
Student[] arr= new Student[un.size()];
alist.toArray(arr);
答案 4 :(得分:0)
您也可以尝试这样做,以上所有内容都是正确的,但这很简单
String[] arr = alist.toArray(new Student[un.size()]);
list.toArray return an array containing all of the elements in this collection