Java流分割线并存储在不同的对象中

标签 java split java-8 java-stream lines

我正在尝试了解 Java 8 的 Streams。目前,我有一个格式为 .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   

这 3 个“项目”始终由制表符分隔。我想要做的是声明一个类,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 属性的对象中。我该怎么做?

最佳答案

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

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

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

关于Java流分割线并存储在不同的对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418054/

相关文章:

java - 转到 TextView 时与旋转器相关的问题

javascript - 避免字符串中的问号

javascript - 拆分反斜杠合并拆分元素

java - HashMap 何时以及如何将桶从链表转换为红黑树?

Java 8 : Parallel stream to wait until all the threads finishes the task

java - 如何在 lambda 函数中访问方法局部变量?

java - 计算给定字母在Java中出现的句子

java - 如何分解字符串?

java - 在java中将部分 HashMap 重复项合并到新的数组列表

java - 程序每次运行时都会将 header 添加到 CSV 文件中