gpt4 book ai didi

java - 从其他方法引用 ArrayList 而无需重新创建它

转载 作者:行者123 更新时间:2023-12-01 13:06:20 26 4
gpt4 key购买 nike

我的程序读取包含学生信息的文本文件,并将每行数据放入具有各种属性的新 Student 对象中。

然后循环将每个 Student 对象放入 ArrayList,从而允许使用其他方法搜索学生数据。

但是,我能够完成这项工作的唯一方法是在每个搜索方法中调用 readStudent 方法,这意味着会重复处理输入文件并重新创建 ArrayList。

这是读取输入文件、创建对象并将对象放入 ArrayList 的方法:

public class readStudent
{

public static List< Student > readStudent() throws Exception {
Scanner input = new Scanner(new File("students.txt"));
List< Student > studentList = new ArrayList< Student >();

while (input.hasNext()) {

int id = input.nextInt();
String lastName = input.next();
String firstName = input.next();
int gradYear = input.nextInt();

Student student = new Student(id, firstName, lastName, gradYear);
studentList.add(student);

}
return studentList;
}

这是搜索方法之一,也在 readStudent 类中(为简洁起见略有编辑):

 public static void allRecords() throws Exception {
List< Student > studentList = readStudent.readStudent();
int size = studentList.size();

for (int i=0; i<size; i++) {

System.out.printf("%-5d %10s %10s %15d\n", studentList.get(i).returnId(), studentList.get(i).returnFirst(), studentList.get(i).returnLast(), studentList.get(i).returnGrad());
}

}

其他查找方法均以List studentList = readStudent.readStudent();开头使数组可供搜索。

我的问题是:是否可以执行一次 readStudent 方法来创建 ArrayList(也许是在 main 的开头),然后从搜索方法中引用该 ArrayList,而不必每次都重新运行整个 readStudent 方法?

最佳答案

一个简单的解决方案是创建一个类级别的 List 并仅在 main 开始时初始化一次。然后在整个代码中使用它。

    public class readStudent
{

private static List< Student > studentList;

public static void main(String[] args)
{
studentList = readStudent();

// all other code...
}


static someMethod(){

// use studentList directly
}


}

只需确保您的代码是线程安全的。

关于java - 从其他方法引用 ArrayList 而无需重新创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23234480/

26 4 0