java - 如何将txt文件中的数据输入到数组列表中。涉及多种数据类型和作为其他类的变量的类对象

标签 java arraylist text-files

我正在从不同的 txt 文件中读取数据来创建对象,然后读取到对象的数组列表中。

举个例子,我有一个包含 3 或 4 个变量的教师类(class)

public class Teacher {



        public static String teacherNo;
        public static String firstName;
        public static String lastName;
        public static Courses coursestought; 

还有一门类(class)

public class Course {



        public static String cCode;
        public static String cName;

教师类的构造函数是这样的

// constructor 
        public Teacher(String teacher_No,String first_Name,String last_Name, 
                Course coursesTought,)

我有所有正确的 getter 和 setter(我认为)

我从这样的文本文件中读取。

BufferedReader inFile = new BufferedReader (new FileReader 
           ("pathtofile/teachers.txt"));

我像这样创建了 Teacher 对象

String inputLine;
        inputLine = inFile.readLine();
        while (inputLine != null)
        {

            teacherlist.add(new Teacher
                    (inputLine, inputLine, inputLine, inputLine,));
            inputLine = inFile.readLine();
        }

但这仅在所有字段都是字符串而不是字符串、变量和对象的混合时才有效。文本文件中的字段为教师 1 行,并用 :

分隔

有人能给我指出正确的方向吗?

我读入字符串时需要剪断它们吗?

最佳答案

是的。您需要使用String#split()要在读取字符串后分割它们,创建对象然后将它们添加到数组列表中

List<Teacher> teachers = new ArrayList<Teacher>();

BufferedReader inFile = new BufferedReader (new FileReader 
           ("pathtofile/teachers.txt"));

String inputLine;
while ( (inputLine = inFile.readLine() ) != null) { // read one line at a time

    String[] teacherVars = inputLine.split(":"); // split into a string array.
    teachers.add(new Teacher(teacherVars[0], teacherVars[1], teacherVars[2], teacherVars[3]);
}

从您的问题中不太清楚如何在文本文件中表示 Courses 对象。如果同一行的长度可变,您可能需要执行一些额外的操作来动态创建 Courses 对象,然后创建 Teacher 对象。

TeacherCourses 中的实例变量也不应该是静态的。静态意味着类级别而不是对象级别。

如果您有一个类似这样的 Teacher 类,

public class Teacher {

    private String teacherNo;
    ...
    private List<Course> courses;

    public List<Course> getCourses() {
       if ( courses == null)
          courses = new ArrayList<Course>();
       return courses;
    }
}

然后,你可以在 while 循环中这样调用它 --

while ( (inputLine = input.readLine() ) != null ) {
      Teacher teacher = new Teacher(teacherVar[0], teacherVar[1], teacherVar[2]);
      Course aCourse = new Course(teacherVar[3], teacherVar[4]);

      teacher.getCourses().add(aCourse);
}

假设您的教师文本行包含类(class)代码和类(class)名称。

关于java - 如何将txt文件中的数据输入到数组列表中。涉及多种数据类型和作为其他类的变量的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133077/

相关文章:

python - 如何使用 python 中的现有文本文件添加 XML 标记新文件?

java - 使用递归对数字 ArrayList 进行排列

java - Java 中需要方法仅返回匹配的数字

string - 使用vbscript将汉字写入文本文件

java - 如果 ArrayList 中的字符串包含 "",则获取索引

java - 在Java中增加ArrayList中ArrayList的大小

iphone - 如何将文件添加到 xcode iphone 项目中的 .plist?

java - Spring-Batch如何在不同的数据库中写入作业元数据?

java - Kernel32.INSTANCE.ReadProcessMemory 在 JNA 中确实很慢

java - 如何从 ArrayList 复制对象并在 HashMap 中按 int 大小对它们进行排序?