我正在尝试创建ArrayList
,其成员也都有ArrayList
。我的想法是我有ArrayList
个模块,然后每个模块也应该有自己的ArrayList
个学生,但是我很难为它创建构造函数。这是我到目前为止所得到的
import java.util.*;
public class Module {
private String code;
private ArrayList<Student> students;
public Module(){
students = new ArrayList<Student>();
}
public Module(String newCode, ArrayList<Student> students){
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
我正在尝试让构造函数工作,但我认为它只创建了一个通用ArrayList
,而我希望每个模块都有自己的学生集。关于如何处理这个问题的任何建议都将非常感激。
加载学生ArrayList
我一直在使用扫描仪
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();
}
但我不确定如何加载ArrayList
ArrayList
。
答案 0 :(得分:0)
看起来你做对了......我没有看到你的方法存在任何缺陷,除非你要列出static
,不做什么你想要的。
正如现在所读,Module
的每个实例都包含Students
的列表。这里的关键是要记住在需要时实例化Module
的新实例,并适当地填充列表。
答案 1 :(得分:0)
您的代码将按预期工作。由于ArrayList
学生为non-static
,因此Module
的每个实例都有自己的ArrayList
。此外,您希望设置适当的setter和getter来管理ArrayList
。
答案 2 :(得分:0)
因为您的问题似乎是加载列表列表,特别是如何从文本文件中获取列表列表。
这里的问题是你的文本文件格式。就像现在一样,每个学生在你的文件中占用4行,文件中只有学生。
有很多可能的方法可以做到这一点,其中之一是:
对于你的模块列表,你可以在文件的开头有一行,告诉你有多少个模块,每个模块开头的两个特定行告诉你:
接下来将是通常格式的学生。之后,将重复模块标题行。
示例代码:
public ArrayList<Module> loadModules(String filename) throws FileNotFoundException {
Scanner infile = new Scanner(new InputStreamReader(new FileInputStream(filename)));
int numModules = infile.nextInt();
infile.nextLine();
ArrayList<Module> modules = new ArrayList<Module>(numModules);
infile.nextLine();
for (int i = 0; i < numModules; i++) {
String code = infile.nextLine();
int numStudents = infile.nextInt();
infile.nextLine();
ArrayList<Student> students = new ArrayList<Student>(numStudents);
for (int j = 0; j < numStudents; j++) {
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);
}
Module md = new Module(code, students);
modules.add(md);
}
infile.close();
return modules;
}
要加载的示例文件:
2
module1
4
student1u
student1s
student1n
student1c
student2u
student2s
student2n
student2c
student3u
student3s
student3n
student3c
student4u
student4s
student4n
student4c
module2
1
student1u
student1s
student1n
student1c
希望我能提供帮助, // 265
编辑:更正了第2行中的fileName引用错误