Java 使用另一个数组列表的对象从一个数组列表获取值
我有3个数组列表。 1) 学生(身份证、姓名、课程) 2) 课程(ID、姓名、学时) 3) 学生课程(学生ID,课程ID) 我正在通过StudentID从StudentCourses中进行搜索,并以其姓名注册课程。 我的StudentCourse ArrayLIst有这样的对象 49(学生证) CS233(课程编号) 49(学生证) CS231(课程编号) 当用户搜索学生时,假设我正在搜索注册号为49的Johnna。 结果是 注册编号:49 姓名:约翰娜 课程:理学学士 注册课程: CS233 CS231 这很好。但是,我真正需要做的是使用出现在Johnna搜索信息中的课程ID获取课程名称。课程列表如下所示: CS233 哎呀 平衡计分卡 CS231 算法 平衡计分卡 我试过这个代码,但似乎不起作用。它不断给出垃圾值,或者只打印所有课程名称,直到出现空异常:Java 使用另一个数组列表的对象从一个数组列表获取值,java,object,arraylist,Java,Object,Arraylist,我有3个数组列表。 1) 学生(身份证、姓名、课程) 2) 课程(ID、姓名、学时) 3) 学生课程(学生ID,课程ID) 我正在通过StudentID从StudentCourses中进行搜索,并以其姓名注册课程。 我的StudentCourse ArrayLIst有这样的对象 49(学生证) CS233(课程编号) 49(学生证) CS231(课程编号) 当用户搜索学生时,假设我正在搜索注册号为49的Johnna。 结果是 注册编号:49 姓名:约翰娜 课程:理学学士 注册课程: CS233
if (myStudent == null) {
System.out.print("No Record Was Found");
} else {
System.out.print("Student ID: " + myStudent.getID() + "\nFull Name: " + myStudent.getName() + "\nProgram: " + myStudent.getProgram() +
"\nTotal Credit Hours: " + (Integer.parseInt(myStudent.getTotalCreds())) * 3420 + "Rs" + "\nCourses Registered:\n");
}
for (int i = 0; i < studCourseList.size(); i++) {
if (studCourseList.get(i).getSid().equals(ID)) {
System.out.print("- " + studCourseList.get(i).getCid() + "\n");
for (int j = 0; j < CoursesList.size(); j++) {
if(CoursesList.get(i).getID().equals(studCourseList.get(i).getCid())){
System.out.print("- " + CoursesList.get(i).getName() + "\n");
break;
}
}
}
}
if(myStudent==null){
系统输出打印(“未找到任何记录”);
}否则{
System.out.print(“学生ID:+myStudent.getID()+”\n全名:+myStudent.getName()+”\n程序:+myStudent.getProgram()+
“\n总学时数:”+(Integer.parseInt(myStudent.gettotalcleds())*3420+“Rs”+“\n注册课程:\n”);
}
对于(int i=0;i
上面的部分带来了学生信息,第一个循环用于根据学生ID注册的课程,第二个循环不起作用。
请注意,所有对象都位于不同的直线上。如果你不明白我想问的,请不要投反对票。问问吧。我会再次解释。我建议您在这种情况下使用
Map
代替List
,其中Id被视为键,POJO被视为其值。
HashMap
比搜索中的List
更快
示例代码:
class Student {
private String id;
private String name;
private String program;
// getter setter
}
class Course {
private String id;
private String name;
private int creditHours;
// getter setter
}
class StudentCourses {
private String studentId;
private String courseId;
// getter setter
}
Map<String, Student> students = new HashMap<String, Student>();
Map<String, Course> courses = new HashMap<String, Course>();
班级学生{
私有字符串id;
私有字符串名称;
私有字符串程序;
//吸气剂设定器
}
班级课程{
私有字符串id;
私有字符串名称;
私人时间;
//吸气剂设定器
}
班级学生课程{
私人字符串学生ID;
私有字符串;
//吸气剂设定器
}
Map students=newhashmap();
Map courses=newhashmap();
在这种情况下,Id被视为键,POJO被视为其值,我建议您使用Map
代替List
。
HashMap
比搜索中的List
更快
示例代码:
class Student {
private String id;
private String name;
private String program;
// getter setter
}
class Course {
private String id;
private String name;
private int creditHours;
// getter setter
}
class StudentCourses {
private String studentId;
private String courseId;
// getter setter
}
Map<String, Student> students = new HashMap<String, Student>();
Map<String, Course> courses = new HashMap<String, Course>();
班级学生{
私有字符串id;
私有字符串名称;
私有字符串程序;
//吸气剂设定器
}
班级课程{
私有字符串id;
私有字符串名称;
私人时间;
//吸气剂设定器
}
班级学生课程{
私人字符串学生ID;
私有字符串;
//吸气剂设定器
}
Map students=newhashmap();
Map courses=newhashmap();
在这种情况下,Id被视为键,POJO被视为其值,我建议您使用Map
代替List
。
HashMap
比搜索中的List
更快
示例代码:
class Student {
private String id;
private String name;
private String program;
// getter setter
}
class Course {
private String id;
private String name;
private int creditHours;
// getter setter
}
class StudentCourses {
private String studentId;
private String courseId;
// getter setter
}
Map<String, Student> students = new HashMap<String, Student>();
Map<String, Course> courses = new HashMap<String, Course>();
班级学生{
私有字符串id;
私有字符串名称;
私有字符串程序;
//吸气剂设定器
}
班级课程{
私有字符串id;
私有字符串名称;
私人时间;
//吸气剂设定器
}
班级学生课程{
私人字符串学生ID;
私有字符串;
//吸气剂设定器
}
Map students=newhashmap();
Map courses=newhashmap();
在这种情况下,Id被视为键,POJO被视为其值,我建议您使用Map
代替List
。
HashMap
比搜索中的List
更快
示例代码:
class Student {
private String id;
private String name;
private String program;
// getter setter
}
class Course {
private String id;
private String name;
private int creditHours;
// getter setter
}
class StudentCourses {
private String studentId;
private String courseId;
// getter setter
}
Map<String, Student> students = new HashMap<String, Student>();
Map<String, Course> courses = new HashMap<String, Course>();
班级学生{
私有字符串id;
私有字符串名称;
私有字符串程序;
//吸气剂设定器
}
班级课程{
私有字符串id;
私有字符串名称;
私人时间;
//吸气剂设定器
}
班级学生课程{
私人字符串学生ID;
私有字符串;
//吸气剂设定器
}
Map students=newhashmap();
Map courses=newhashmap();
在嵌套for循环中,您使用“j”作为计数器,但在该循环中,您引用“i”
for (int j = 0;j<CoursesList.size(); j++){
if (CoursesList.get(i).getID().equals(studCourseList.get(i).getCid()));
{
System.out.print("- " + CoursesList.get(i).getName() + "\n");
break;
}
应该使用“j”作为参考,否则您实际上不是在浏览studCourseList,而是在反复比较相同的两个项目。在嵌套for循环中,您使用“j”作为计数器,但在该循环中,您引用“i”
for (int j = 0;j<CoursesList.size(); j++){
if (CoursesList.get(i).getID().equals(studCourseList.get(i).getCid()));
{
System.out.print("- " + CoursesList.get(i).getName() + "\n");
break;
}
应该使用“j”作为参考,否则您实际上不是在浏览studCourseList,而是在反复比较相同的两个项目。在嵌套for循环中,您使用“j”作为计数器,但在该循环中,您引用“i”
for (int j = 0;j<CoursesList.size(); j++){
if (CoursesList.get(i).getID().equals(studCourseList.get(i).getCid()));
{
System.out.print("- " + CoursesList.get(i).getName() + "\n");
break;
}
应该使用“j”作为参考,否则您实际上不是在浏览studCourseList,而是在反复比较相同的两个项目。在嵌套for循环中,您使用“j”作为计数器,但在该循环中,您引用“i”
for (int j = 0;j<CoursesList.size(); j++){
if (CoursesList.get(i).getID().equals(studCourseList.get(i).getCid()));
{
System.out.print("- " + CoursesList.get(i).getName() + "\n");
break;
}
应该使用“j”作为参考,否则您实际上不是在浏览studCourseList,而是在反复比较相同的两个项目。对于初学者,请删除此if语句后的分号!
if(CoursesList.get(i).getID().equals(studCourseList.get(i).getCi