创建一个Array Object学生并将其添加到ArrayList

时间:2016-12-12 00:34:25

标签: java arrays nullpointerexception

你能帮助我解决我的对象类人物问题吗?每次我运行程序时,我都有一个空指针问题。这是代码。

List<Student> listPerson = new ArrayList<>();
Student[] stud = null;
int counter = 0;

ResultSet rs = DBMSConnection.GetDetails();

while(rs.next()){

    stud[counter] = new Student();
    stud[counter].setFirst_name(rs.getString("first_name"));
    stud[counter].setLast_name(rs.getString("last_name"));
    stud[counter].setAddress(rs.getString("address"));
    counter++;    
}

for( int i = 0 ; i < counter ; i++){
    listPerson.add(stud[i]);
}

这是您添加到其他答案的修改

我真正想要的就是这些人。

 Student stud = new Student();
 stud.firstname = "john";
 stud.lastname = "doe";


 Student stud2 = new Student();
 stud2.firstname = "Mike";
 stud2.lastname = "doe";

 List<Student> list = new ArrayList<>();
 list.add(stud);
 list.add(stud2);

注意:有没有办法在循环中实例化Student stud;例如

int record = 100;
Student[] sa = null;

for(int i = 0; i<record; i++){
  sa[i] = new Student[]; //instantiate Objects on the fly
  list.add(sa[i]);
}

我想将所有第一条记录分配到第一个对象实例中,就像stud第一条记录stud2的值具有第二条记录并将其传递给列表一样。

2 个答案:

答案 0 :(得分:1)

你的数组为空Student[] stud = null;,因为它永远不会从null改变但实际上你不需要数组

考虑

   ResultSet rs = DBMSConnection.GetDetails();

    while(rs.next()){

        Student stud = new Student();
        stud.setFirst_name(rs.getString("first_name"));
        stud.setLast_name(rs.getString("last_name"));
        stud.setAddress(rs.getString("address"));
        listPerson.add(stud);
   }

修改

稍后您可以按如下方式遍历此ArrayList

for (Student student: listPerson) {
    System.out.println (student.getFirst()); 
}     

答案 1 :(得分:0)

数组是Java中的对象,用于存储多个相同类型的变量。数组 可以保存基元或对象引用,但数组本身将始终是堆上的对象,即使声明数组保存基本元素。

构造数组意味着在堆上创建数组对象(所有数组) 对象直播) - 也就是说,在数组类型上做一个新的。要创建数组对象,Java必须知道在堆上分配多少空间,因此必须在创建时指定数组的大小。数组的大小是数组将保存的元素数。

如果要动态管理数据,可以使用java.util中的一种Collection类型(包括HashMap,ArrayList,TreeSet)。

在你的情况下,

List<Student> listPerson = new ArrayList<>();
ResultSet rs = DBMSConnection.GetDetails();

while(rs.next()){

    Student stud = new Student();
    stud.setFirst_name(rs.getString("first_name"));
    stud.setLast_name(rs.getString("last_name"));
    stud.setAddress(rs.getString("address"));
    listPerson.add(stud);
}

while循环完成此作业后,您将获得所有数据(listPerson)并可以传递给JTable进行解析等。