簡體   English   中英

如何將對象從ArrayList添加到另一個類中的另一個ArrayList

[英]How to add an object from an ArrayList to another ArrayList in another class

我有兩個類Student和ClassRoom,每個類都有一個ArrayList。 我正在嘗試將學生對象從學生ArrayList移到ClassRoom ArrayList,但它不起作用。

ClassRoom類代碼:

public class ClassRoom{

private String id;
private String name;
private int age;
ArrayList< ClassRoom >classRoom;

public ClassRoom(String id, String name, int age){

    this.id = id;
    this.name = name;
    this.age = age;
}

public ClassRoom() {
    classRoom = new ArrayList();
    id = " ";
    name = " ";
    age = 0;
}

public void Add(String id,String name,int age){
    ClassRoom c = new ClassRoom(id, name, age);
    classRoom.add(c);
}

學生班級代碼:

public class Student{

private String id;
private String name;
private int age;
private ClassRoom classroom;

ArrayList< Student >students;

public Student(String id, String name, int age){

    this.id = id;
    this.name = name;
    this.age = age;
}

public Student() {
    students = new ArrayList();
    id = " ";
    name = " ";
    age = 0;
}

public void Add(String id,String name,int age){
    Student s = new Student(id, name, age);
    students.add(s);
}

public void MoveToClassRoom(String id, String name, int age){
    for(int i=0; i< students.size();i++){
                if (students.get(i).getId().equals(id)){
                classroom.Add(students.get(i).getId(), students.get(i).getName(), students.get(i).getAge());
                students.remove(i);
                }
    }
}

Students不是那種Classroom 因為您使用的是兩種特定於這兩種的ArrayList ,所以幾乎沒有互換性。 這樣做的原因是因為駐留在List每個對象都必須沿着該行的某個位置共享與List類型匹配的相同繼承鏈。

在Java中,您創建的每個類都隱式繼承自Object類型。 例如,這就是toString()hashCode()方法的來源。 因此,如果你希望把StudentClassroom在同一個列表,你可以將它們放置在一個List類型的<Object> ...但沒有什么有意思 ,你會能夠與該做的事。 但是,這將突出說明您將能夠與該列表中的元素進行足夠類型的交互以支持所有包含的元素; 也就是說,您可以在List任何元素上調用Object方法。

因此,如果您想對其內容進行更多特定於應用程序的操作,可能會對稍微不同的設計模式感興趣。 如果要在同一List放置多種對象,則必須具有某種共享功能。 在某些情況下,以與Classroom相同的方式對待Student似乎是合理的。 如果您想這樣做,則可以讓StudentClassroom extend一個SchoolEntity類型的class ,該類將包含StudentClassroom元素都需要的方法和屬性。 然后,您可以創建類型為<SchoolEntity>List ,以容納這兩種類型甚至更多種類型。

為了獲得更大的靈活性,您可以定義一個ISchoolEntity接口, StudentClassroom都可以實現該接口,而改用List<ISchoolEntity> 之所以更靈活,是因為Java不支持多重inheritance ; 這意味着一旦ClassroomStudent extend SchoolEntity ,他們以后將無法再extend諸如CollegeEntity類的其他課程。 相反,Java允許類實現多種接口,因此如果以后需要應用程序,則可以將StudentClassroom視為ISchoolEntityICollegeEntity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM