【问题标题】:create new object in arraylist with attributes在带有属性的arraylist中创建新对象
【发布时间】:2013-03-13 04:50:15
【问题描述】:

我是 Java 新手,开始使用 ArrayLists。我想做的是为学生创建一个ArrayList。每个学生都有与他们相关的不同属性 (name, id)。我试图弄清楚如何添加具有此属性的新学生对象。这是我所拥有的:

ArrayList < Student > studentArray;
public Student(String name, int id) {
  this.fname = name;
  this.stId = id;
}
public Stromg getName() {
  return fname;
}
public int getId() {
  return stId;
}
public boolean setName(String name) {
  this.fname = name;
  return true;
}
public boolean setIdNum(int id) {
  this.stId = id;
  return true;
}

【问题讨论】:

  • 那么您真正的问题是什么?出了什么问题?
  • 如何创建一个新的对象(学生),其名称和 ID 与用户输入的相关联?
  • 我认为Stromg 的意思是String,否则这不会编译(除非你实际上有一个Stromg 类潜伏着)。

标签: java arraylist


【解决方案1】:

您需要的是以下内容:

import java.util.*;

class TestStudent
{
    public static void main(String args[])
    {
        List<Student> StudentList= new ArrayList<Student>();
        Student tempStudent = new Student();
        tempStudent.setName("Rey");
        tempStudent.setIdNum(619);
        StudentList.add(tempStudent);
        System.out.println(StudentList.get(0).getName()+", "+StudentList.get(0).getId());
    }
}

class Student
{
    private String fname;
    private int stId;

    public String getName()
    {
        return this.fname;
    }

    public int getId()
    {
        return this.stId;
    }

    public boolean setName(String name)
    {
        this.fname = name;
        return true;
    }

    public boolean setIdNum(int id)
    {
        this.stId = id;
        return true;
    }
}

【讨论】:

  • 这正是我想要的。谢谢你的帮助。
  • @bardockyo:乐于助人。 :)
【解决方案2】:

您通过将适当的值传递给构造函数来实例化 Student 对象。

Student s = new Student("Mr. Big", 31);

您可以使用.add() 运算符将元素放入ArrayList(或List)。*

List<Student> studentList = new ArrayList<Student>();
studentList.add(s);

您通过使用绑定到System.inScanner 检索用户输入。

Scanner scan = new Scanner(System.in);
System.out.println("What is the student's name?");
String name = scan.nextLine();
System.out.println("What is their ID?");
int id = scan.nextInt();

你用一个循环重复这个。该部分应留给读者作为练习。

*:还有其他选项,但add() 只是将其添加到末尾,这通常是您想要的。

【讨论】:

  • 感谢您的回复。我明白你在说什么,但是如果我像你说的那样把值放进去,我的 get/set 方法在我的项目中服务的目的是什么?
  • 访问器和修改器。您确实想访问他们的姓名和 ID 的值,但您真的需要更改它们吗?删除这些设置器可能值得。
  • @bardockyo 这些值还没有在 Student 对象中,您需要使用 setter 来放置它们
  • @AbdullahShaikh:不;考虑到对象的构造方式,一个值不可能不在Student 中(除非传递了 null 和 -1,即使这样它们仍然是值)。
【解决方案3】:
final List<Student> students = new ArrayList<Student>();
students.add(new Student("Somename", 1));

...等等添加更多学生

【讨论】: