我试图了解Java 8的流。目前,我有一个.txt文件,格式如下:

2011-11-28 02:27:59     2011-11-28 10:18:11     Sleeping
2011-11-28 10:21:24     2011-11-28 10:23:36     Toileting
2011-11-28 10:25:44     2011-11-28 10:33:00     Showering
2011-11-28 10:34:23     2011-11-28 10:43:00     Breakfast

这三个“项目”始终由TAB分隔。我想做的是声明一个具有属性(字符串类型)的类MonitoredData
start_time  end_time  activity

我要实现的是使用流从文件中读取数据并创建MonitoredData类型的对象列表。

在阅读了有关Java 8的内容之后,我设法编写了以下内容,但后来我走到了尽头
public class MonitoredData {
    private String start_time;
    private String end_time;
    private String activity;

    public MonitoredData(){}

    public void readFile(){
        String file = "Activities.txt";  //get file name
        //i will try to convert the string in this DateFormat later on
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        //Store the lines from the file in Object of type Stream
        try (Stream<String> stream = Files.lines(Paths.get(file))) {

            stream.map(line->line.split("\t"));


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

好吧,我不得不以某种方式拆分每行并将其存储在适合MonitoredData属性的Object中。我怎么做?

最佳答案

您所要做的就是添加另一个map操作,如下所示:

 stream.map(line -> line.split("\t"))
       .map(a -> new MonitoredData(a[0], a[1], a[2]))
       .collect(Collectors.toList());

然后使用toList收集器收集到列表。

09-12 17:29