黑马程序员技术交流社区
标题: 关于ArrayList如何转换成数组出现异常求指教 [打印本页]
作者: Без_тебя 时间: 2014-6-13 01:11
标题: 关于ArrayList如何转换成数组出现异常求指教
大家来帮忙下,我有一个Student类:
public class Student implements Comparable<Student> {
private String name;
private int age;
private double score;
public Student(){
}
public Student(String name, int age, double score){
this.name=name;
this.age=age;
this.score=score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public int compareTo(Student stu) {
return (int) (this.score-stu.getScore());
}
@Override
public String toString(){
return "姓名:"+this.name+" 年龄:"+this.age+" 成绩:"+this.score;
}
}
我想在主函数这边
public static void main(String[] args) {
Student stu1 = new Student("aaa",11,88.0);
Student stu2 = new Student("bbb",13,90.0);
Student stu3 = new Student("aaa",11,88.0);
Student stu4 = new Student("bbb",13,91.0);
Student stu5 = new Student("aaa",13,82.0);
Student stu6 = new Student("bbb",12,94.0);
Student stu7 = new Student("aaa",15,81.0);
Student stu8 = new Student("bbb",16,91.0);
List<Student> list = new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
list.add(stu6);
list.add(stu7);
list.add(stu8);
/*
这边报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ldemo2.Student;
at demo2.demo2.main(demo2.java:19)
是转换异常,该怎么解决呢,求大神指导
*/
Student[] stus = (Student[]) list.toArray();
}
作者: 496080891 时间: 2014-6-13 12:30
- Object[]stus = list.toArray();
- for(Object stu:stus)
- {
- System.out.println(stu);
- }
复制代码
只会弄这个了,toArray()返回一个Object[]
作者: lzy418 时间: 2014-6-14 16:10
List,Set转换为数组的方法。
toArray函数有两种形式,一种无参数,一种带参数,注意带参数形式中,要指明数组的大小。
例子:
public void convertCollectionToArray() {
List list = new ArrayList(); Object[] objectArray1 = list.toArray(); String[] array1 = list.toArray(new String[list.size()]);
}
带参数的转换方式才能不用Object[]接收。你的程序的话就将Student[] stus = (Student[]) list.toArray();改为Student[] stus = (Student[]) list.toArray(new Student[list.size()]);就是说要自己建一个数组接收,而不是只建立引用。
作者: Wokno 时间: 2014-6-14 20:49
路过看看。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |