gpt4 book ai didi

java - 将两种不同类型的数组放入第一个数组

转载 作者:行者123 更新时间:2023-11-29 08:07:22 25 4
gpt4 key购买 nike

我创建了一个 ArrayList<Student>在对象中 StudentList list1那是 saving[Serialization]一个学生的信息(name,id,age,gpa,etc)进入list1 ,所以 list1[0] = 1st student's info , 然后是 list1[1] = 2nd student's info等等。

还有一个新的ArrayList<Subject>在对象中 SubjectList list2对于索引为 0 的学生的所有科目示例 list2[0]=(java,math,etc) [第一个学生] list2[1]=(c++,english,etc) [对于第二个学生] 保存在一个文件中。

想在学生信息旁边添加主题:

list1 index[0]=1st Student info, index[1]=1st Student's Subjects.
index[2]=1st Student info,index[3]=1st Student's Subjects.

我被这个简单的问题困住了。请帮忙。

package studentPanel;

public class Main {
public static void main(String[] args){
Student s = new Student(null, null, null, null);
s.stulist.add(new Student("Smith", "1", "M", "3"));
s.stulist.add(new Student("Jenny", "2", "F", "4"));
s.stulist.add(new Student("Roger", "3", "M", "2"));
System.out.println(""+s.stulist);
for(int i=0;i<s.stulist.size();i++){
Student search = s.stulist.get(i);
if(search.toString().contains("Jenny")){
System.out.println("Found"+i);
s.addSubject(s.new Subject("OOP","007"));
s.addSubjects(s.sublist);
System.out.println(""+s.stulist.get(i)+""+s.sublist);
}
else System.out.println("Not Found"+i);
}
System.out.println(""+s.stulist);
}
}

package studentPanel;

import java.util.*;

public class Student {
public String name, id, gender, cgpa;

ArrayList<Subject> sublist = new ArrayList<Subject>();
ArrayList<Student> stulist = new ArrayList<Student>();
public void addSubject(Subject new_subject) {
sublist.add(new_subject);
}
public void addSubjects(List<Subject> subjects_list) {
for (Subject s : subjects_list)
addSubject(s);
}
public Student(String name, String id, String gender, String cgpa) {
this.name = name;
this.id = id;
this.gender = gender;
this.cgpa = cgpa;
}
public String toString() {
return "Name: " + name + "\tID: " + id + "\tGender: " + gender + "\tCGPA: " +

cgpa+ "\n";
}
public class Subject {
public String cname,cid;
public Subject(String cname, String cid) {
this.cname = cname;
this.cid = cid;
}
public String toString() {
return "Course: " + cname + "\tCode: " + cid;
}
}
}

我只是没弄对,本来是要添加主题`s.addSubject(s.new Subject

("OOP","007"));` 给学生珍妮。

输出应该是这样的:

[Name: Smith ID: 1 Gender: M CGPA: 3

, Name: Jenny ID: 2 Gender: F CGPA: 4

, Name: Roger ID: 3 Gender: M CGPA: 2 ]

Not Found0

Found1

[ Name: Jenny ID: 2 Gender: F CGPA: 4 ][Course: OOP,Code: 007]

Not Found2

[Name: Smith ID: 1 Gender: M CGPA: 3

, Name: Jenny ID: 2 Gender: F CGPA: 4 [Course: OOP,Code: 007]

, Name: Roger ID: 3 Gender: M CGPA: 2 ]

最佳答案

我认为您有两个不同的问题。

您的第一个问题:

第一个是你有一个列表,你想在该列表中放入不同的对象(一个学生对象和一个主题对象)。您可以通过两种不同的方式执行此操作。第一种方法是简单地将列表与对象一起使用:List<Object> list = new ArrayList<Object>();之后您可以将所有内容添加到列表中,但您还必须转换所有内容 - 这不是一个好的解决方案。第二种更好的解决方案是为两个对象提供一个公共(public)接口(interface)。例如一个叫做 IInformation 的东西你的类实现。但是很难为学生-对象和主题-对象找到合适的接口(interface)。但这取决于您的创造力。

你的第二个问题:

现在来解决你的第二个问题。我认为你的设计、架构或只是你想做的方式是错误的。你有什么问题?为什么要将信息放在学生后面的列表中?有充分的理由吗?我认为有更好的解决方案。例如,您的学生对象可以包含主题信息。那是合乎逻辑的。作为一名学生,我知道我正在学习的科目。另一种方法是创建第三个对象来保存学生和主题之间的映射(即关系):

class Relation {

private Student student;
private Subject subject;
}

然后您可以将这样的对象存储在您的列表中。

关于java - 将两种不同类型的数组放入第一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266249/

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