我这里有一组三个ArrayLists。包含姓名,姓氏,学位和学位计划的学生的ArrayList。然后我还有一个模块列表,每个模块还包含一个学生ID的arraylist,用于注册该特定模块的学生。
我要做的是将学生的arraylist链接到用户ID的arraylist,以便程序查看ID并将它们与包含所有学生详细信息的列表进行比较,然后编写一个组合报告完整的学生详细信息和他们注册的模块。
我让我的arraylists设置得很好,但我很难通过ID访问内部arraylist。解释起来非常棘手,但这里是我的Application类的代码,它将所有内容组合在一起,你可以看到ArrayLists的布局。
import java.util.*;
import java.io.*;
public class Model {
private ArrayList<Student> students;
private ArrayList<Module> modules;
private Module moduleLink;
public Model(){
students = new ArrayList<Student>();
modules = new ArrayList<Module>();
}
public void runTests() throws FileNotFoundException{
System.out.println("Beginning program, the ArrayList of students will now be loaded");
loadStudents("studentlist.txt");
System.out.println("Load attempted, will now print off the list");
printStudents();
System.out.println("The module list will now be loaded and printed");
loadModules("moduleslist.txt");
printModules();
System.out.println("Modules printed, ArrayList assosciation will commence");
}
public void printStudents(){
for(Student s: students){
System.out.println(s.toString());
}
}
public void printModules(){
for(Module m: modules){
System.out.println(m.toString());
}
}
public void loadStudents(String fileName) throws FileNotFoundException{
Scanner infile =new Scanner(new InputStreamReader
(new FileInputStream(fileName)));
int num=infile.nextInt();infile.nextLine();
for (int i=0;i<num;i++) {
String u=infile.nextLine();
String s=infile.nextLine();
String n=infile.nextLine();
String c=infile.nextLine();
Student st = new Student(u,s,n,c);
students.add(st);
}
infile.close();
}
public void loadModules(String fileName) throws FileNotFoundException{
Scanner infile =new Scanner(new InputStreamReader
(new FileInputStream(fileName)));
int numModules = infile.nextInt();
infile.nextLine();
for (int i=0;i<numModules;i++){
String code = infile.nextLine();
int numStudents = infile.nextInt();
infile.nextLine();
ArrayList<Student> enrolledStudents = new ArrayList<Student>(numStudents);
for (int a=0;a<numStudents;a++){
String uid = infile.nextLine();
Student st = new Student(uid);
enrolledStudents.add(st);
}
Module m = new Module(code,enrolledStudents );
modules.add(m);
}
infile.close();
}
}
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
如果您正在寻找学生详细信息,可能您应该重新设计课程。 学生应该注册一个模块。因此,学生应该有模块。并使用Map根据id检索学生。
class Student {
String id;
List<Module> modules = new ArrayList<Module>();
}
loadStudents()将保持不变,除非您必须将学生ID的Map填充到您在循环中创建的Student对象。 然后,loadModules()将根据地图中的学生ID选择学生并更新模块。
您需要基于学生的数据。