Java中如何基于字段描述将某些文件信息分组为多个对象

Java中如何基于字段描述将某些文件信息分组为多个对象,java,hashmap,line,bufferedreader,filereader,Java,Hashmap,Line,Bufferedreader,Filereader,我有一个相当复杂的文本文件,构建如下: FieldA值 FieldB值 。 . . 字段C值 字段值 。 . . 字段C值 现在,我的目标是构建出每一个——让我们称之为Fieldgroup——一个对象。我从标题(字段A和字段B)开始,读入所有行,直到找到第一个字段C。然后所有内容都存储在Header对象中 现在的问题是:正如您所看到的,FieldC等出现了多次。在我存储了标题并查找FieldC之后,它会在第一次出现时立即停止(当然)并构建对象,而不包含后面的所有信息 所以基本上我想要的是得到所

我有一个相当复杂的文本文件,构建如下:

FieldA值 FieldB值 。 . . 字段C值 字段值 。 . . 字段C值

现在,我的目标是构建出每一个——让我们称之为Fieldgroup——一个对象。我从标题(字段A和字段B)开始,读入所有行,直到找到第一个字段C。然后所有内容都存储在Header对象中

现在的问题是:正如您所看到的,FieldC等出现了多次。在我存储了标题并查找FieldC之后,它会在第一次出现时立即停止(当然)并构建对象,而不包含后面的所有信息

所以基本上我想要的是得到所有C字段的所有数据

我将文件阅读器与LineNumberReader结合使用。(以下简称代码)


提前感谢

当名称为A时,您应该只调用
new
。当名称等于其他名称(例如C)时,您应该调用
Object.update(map)
。您必须自己在对象类中编写这个
Object.update()
方法。此方法应将给定字段添加到实例。

也许我应该更清楚。。。
new
的两个调用都是两个不同的类,我正在创建一个对象。所以第一个是标题(A)。第二个是它的主体。现在,文件也可能包含多个对象,这意味着文件中可能会有一个新的头,其中包含新的内容。即使我更新了所有的东西,它也不能解决这样的问题,即发现的第一个C出现会导致我在构建一个对象时没有它的所有数据,直到下一个C-“包”。编辑:
map
实际上是永久更新的,对象被添加到列表中,因此,我可以稍后读出它们。您可能希望在while块之外保留对已创建ObjectB的引用。然后在
name.equals(C)
块中,您需要检查ObjectB是否为null。如果为空,则创建一个新的,如果不为空,则将此数据添加到现有的ObjectB。
fr = new FileReader(file);
lnr = new LineNumberReader(fr);

while((line = lnr.readLine()) != null){

    // code to split in fieldnames and values and put them in a map

    if(name.equals(A)){

        new ObjectFromClassA(map);
    }else if(name.equals(C){

        //Here is the Problem
        new ObjectFromClassB(map);

}

}