Java 如何在包含不同对象的ArrayList中添加对象组的结尾

Java 如何在包含不同对象的ArrayList中添加对象组的结尾,java,arraylist,indexof,Java,Arraylist,Indexof,我应该创建一个addcourse方法到ArrayList。 Arraylist包含学生和课程。课程在学生之后添加到该学生的末尾。例如,Arraylist可以包含(Student1、Course1、Course2、Student2、Course1、Course3)。当我想将Course3添加到Student1时,它应该在Course2之后,但在Student2之前 addcourse方法应具有以下界面: void add课程(学生s,课程c)。 首先选择我要添加课程的学生和课程。如何在ArrayL

我应该创建一个
addcourse
方法到
ArrayList
Arraylist
包含学生和课程。课程在学生之后添加到该学生的末尾。例如,
Arraylist
可以包含
(Student1、Course1、Course2、Student2、Course1、Course3)
。当我想将
Course3
添加到
Student1
时,它应该在
Course2
之后,但在
Student2
之前

addcourse
方法应具有以下界面:
void add课程(学生s,课程c)。

首先选择我要添加课程的学生和课程。如何在
ArrayList
中找到
Student2
的索引

您使用
ArrayList
做什么?您只需向学生类添加一个
arraylistcourses

例:


您使用
ArrayList
的目的是什么?您只需向学生类添加一个
arraylistcourses

例:



这与安卓毫无关系。添加(list.indexOf(where to place),元素)正是您所需要的。它使用HashMap将多个值(在您的案例课程中)存储在一个键下(在您的案例学生中)。@AishwaryaTiwari他不能在每个学生对象中放置一个
ArrayList
?您是对的,但我希望在addcourse方法的不同类中执行此操作。学生没有可用的更改class@ArjunPanickssery是的,这是可能的,但是,如果在列表的中间或开头添加/删除项目,项目索引将发生变化,然后使用HashMap他仍然可以进行键查找,但使用ArrayList他将不得不迭代ArrayList。这与Android完全无关。添加(list.indexOf(where to place),元素)正是您所需要的。它使用HashMap将多个值(在您的案例课程中)存储在一个键下(在您的案例学生中)。@AishwaryaTiwari他不能在每个学生对象中放置一个
ArrayList
?您是对的,但我希望在addcourse方法的不同类中执行此操作。学生没有可用的更改class@ArjunPanickssery是的,这是可能的,但是,如果在列表之间或列表开头添加/删除项目,项目索引将发生变化,然后使用HashMap,他仍然可以进行键查找,但使用ArrayList,他必须迭代ArrayList。你是对的,但我希望在addcourse方法中的另一个类中进行此操作。学生没有可用的更改class@elliotaks我做了编辑。这回答了问题吗?做得好,但有一个小问题。它给出了类似于课程的学生。应该是我不理解的学生课程。你能给出一个你尝试输入的例子,以及输出是什么吗?它应该将课程添加到列表中。但在你的方法中,它总是在普通学生之前添加,而不是在下一个学生之前添加。你是对的,但我希望在addcourse方法的另一个类中这样做。学生没有可用的更改class@elliotaks我做了编辑。这回答了问题吗?做得好,但有一个小问题。它给出了类似于课程的学生。应该是我不理解的学生课程。你能举一个你尝试过的输入的例子吗?输出是什么?它应该将课程添加到列表中。但是在你的方法中,它总是在普通学生之前添加,而不是在下一个学生之前添加。
public class Student{
    public ArrayList<Course> courses = new Arraylist<Course>;

    //Other stuff

    public void addCourse(Course c){
        courses.add(c);
    }
}
    public void addCourse(Student student, Course course){
        int studentIndex = -1;
        int nextStudentIndex = -1;

        for(int i=0; i<list.size(); i++){
            if(!(list.get(i) instanceof Student)){
                continue;
            }

            if(list.get(i).equals(student)){
                studentIndex = i;
                continue;
            }

            if(studentIndex != -1 && nextStudentIndex == -1){
                nextStudentIndex = i;
            }
        }

        list.add(nextStudentIndex, course);
    }