在java编程中处理和管理表格数据流

时间:2017-05-22 10:15:01

标签: java

我想知道如何在java编程中处理和管理Tabular数据流。 考虑有一个记录表具有该方案(名称,年龄,邮政编码,疾病),并且记录将被元组及时地作为流读取和处理。我想管理这些流元组,以保存已处理的元组与方案(年龄,邮政编码,疾病)(名称属性应删除) 输入示例..在时间t1读取元组1(汉,25,12548,烟道) 发布元组1 *(25,12548,烟道)
在t2阅读Tuple 2(alex,27,12544,癌症)1。 输出元组2 *(27,12544,癌症)。   ..等等,有谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

以下是您可以基于最终应用程序的框架的一些建议。

首先,创建表示输入和输出记录的类。为了讨论起见,我们会将它们称为InRecordOutRecord,但您可以为它们提供任何有意义的名称。给他们私有字段来保存必要的数据和公共getter / setter方法来访问数据。

其次,为输入供应商定义接口;我们称之为InputSupplier进行讨论。它需要提供在处理的开始和结束时调用的设置(open())和拆除(close())方法的方法,以及返回下一个的getNext()方法可用InRecord。您需要决定它如何表明输入结束:要么定义getNext()将返回null,如果 没有更多的输入记录,或提供hasNext()方法来调用,这将返回truefalse以指示是否有其他输入记录。

第三,为输出消费者(OutputConsumer)定义一个接口。您希望拥有open()close()方法,以及accept(OutRecord)方法。

有了这个基础设施,您可以编写处理方法:

public void process(InputSupplier in, OutputConsumer out){
    in.open();
    out.open();
    InRecord inrec;
    while ((inrec = in.getNext()) != null){
        OutRecord outrec = new OutRecord(in.getAge(), in.getZipCode(), in.getDisease());
        out.accept(outrec);
    }
    out.close();
    in.close();
}

最后,写一些" dummy" I / O类,一个实现InputSupplier,另一个实现OutputConsumer。出于测试目的,您的输入供应商可以只返回一些手工创建的记录,您的输出消费者可以在控制台上打印您发送的输出记录。

然后您只需要一个main方法将它们组合在一起:

public static void main(String[] args){
    InputSupplier in = new TestInput();// our "dummy" input supplier class
    OuputConsumer out = new TestOutput(); // our "dummy" output consumer
    process(in, out);
}

对于"真实"申请你写一个真实的"输入供应商类,仍然实现InputSupplier接口,可以从数据库或Excel文件或任何输入源读取,以及新的输出消费者类,仍在实施OutputConsumer接口,可以获取输出记录并将其存储为任何适当的格式。 您的处理逻辑不必更改,因为您使用InputSupplierOutputConsumer接口对其进行了编码。现在只需稍微调整main即可获得最终应用:

public static void main(String[] args){
    InputSupplier in = new RealInput();// our "real" input supplier class
    OuputConsumer out = new RealOutput(); // our "real" output consumer
    process(in, out);
}