使用单独的类设置arraylist的信息

时间:2013-03-14 02:31:50

标签: java arraylist

这可能是一个简单的问题,但我遇到了问题。我有3节课。包含setmethod的Student类:

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

一个带有main的TestClass,它将字符串传递给setmethod

static Student action;

public static void main(String[] args)
{
        action.setName("John");
}

和包含添加学生方法的Classroom课程。

public boolean add(Student newStudent)
    {
            ???
            return true;
    }

我知道如何创建一个对象并将其添加到数组列表中,但我很困惑如何使用3个单独的类来完成它。我的数组列表init是:

List<Student> studentList = new ArrayList<Student>();

如何将在Student类中设置的属性(在本例中为name)与在Classroom类中创建的新对象相关联?

3 个答案:

答案 0 :(得分:2)

我认为你应该遵循最小惊喜的原则,即确保你创建的方法完全符合你的需要。在您的示例中,您的setNameadd方法由于某种原因返回布尔值。通常情况下,setter方法不会返回布尔值,除非您正在进行类似操作的数据库插入,并希望确保实际插入了对象。

另外,一个典型的习惯用法是在静态main方法中创建控制器对象(即TestClass),然后在其构造函数中初始化任何必要的内容,或者通过调用创建的TestClass上的方法主方法本身内的对象。

这是一个解决方案。

public class TestClass {    
    private Classroom c;

    public TestClass() {
        c = new Classroom();
        private Student s = new Student();
        s.setName("John");
        c.add(s);
    }

    public static void main(String[] args)
    {
        new TestClass();
    }
}

public Classroom {
    private List<Student> studentList;

    public Classroom() {
         studentList = new ArrayList<Student>();
    }

    public boolean add(Student newStudent) {
         studentList.add(newStudent);
         return true; //not sure why you're returning booleans
    }
}

答案 1 :(得分:1)

您的学生课程看起来不错,您的课堂课程应包含学生列表,以及添加/删除/列出学生的方法。您的考试班应该创建新的学生,然后您可以将其添加到您的课堂中。

答案 2 :(得分:1)

我假设您想要一个测试类,它是一个测试事件,如期中考试或期末考试,并且您希望将Student和ClassRoom放入测试班。

所以你得到三个班,他们都是相关的。如果是您想要的情况,那么您可以这样做。 (这是一个非常简化的版本!!)

class Test{
    String name;
    HashMap<ClassRoom, ArrayList<Student> > roomMap;
    // ... other functions
}


// you can use ClassRoom as key and Student list as value.
// A ClassRoom key will return a value which is a Student list containg students who are going to take a test in that room.
 public static void main(String[] args) {
    Test test = new Test();
    test.name = "MidTerm";
    test.roomMap = new HashMap<ClassRoom, ArrayList<Student> >();
    ArrayList<Student> students = new ArrayList<Student>();
    students.add(new Student("John"));
    students.add(new Student("Mark"));
    ClassRoom room = new Room("R123");
    test.roomMap.put(room, student);

    // If there are a lot of test, then you could manage test in an ArrayList in your main.
    ArrayList<Test> testList = new ArrayList<Test> ();
    testList.add(test);
}

也许您可以提供有关您的要求的更多详细信息。