gpt4 book ai didi

java - 如何将 ArrayList 中的对象添加到另一个类中的另一个 ArrayList

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:39 24 4
gpt4 key购买 nike

我有两个类(class)Student和ClassRoom,每个类(class)都有一个ArrayList。我正在尝试将学生对象从学生 ArrayList 移动到 ClassRoom ArrayList,但它不起作用。

ClassRoom类(class)代码:

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);
}

学生类(class)代码:

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> ...但是您无法用它做任何有趣的事情。然而,它会强调一点,即您能够与该列表中的元素执行交互类型,这些元素足够通用以支持所有包含的元素;即您可以调用 Object List 中任何元素上的方法.

所以,如果您想用其内容做一些更特定于应用程序的事情,也许您会对稍微不同的设计模式感兴趣。如果你想在同一个对象中放置多种类型的对象List ,必须有某种你想要的共享功能;在某些情况下,处理 Student 似乎是合乎逻辑的就像 Classroom 一样。如果您想这样做,您可以同时拥有 StudentClassroom extend一个class类型 SchoolEntity ,其中包含 Student 的方法和属性和Classroom元素将需要。然后你可以创建一个 List类型 <SchoolEntity> ,容纳两种甚至更多。

为了获得更大的灵 active ,您可以定义一个接口(interface) ISchoolEntity ,两者 StudentClassroom可以实现并使用 List<ISchoolEntity>反而。之所以更灵活是因为Java不支持多个inheritance ;这意味着一旦 ClassroomStudent extend SchoolEntity ,以后他们就不可能 extend另一个类如 CollegeEntity 。相反,Java允许一个类实现多种接口(interface),因此StudentClassroom可能被视为两种 ISchoolEntityICollegeEntity ,如果应用程序稍后需要它。

关于java - 如何将 ArrayList 中的对象添加到另一个类中的另一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com