Java 流分割线并存储在不同的对象中
Java stream split lines and store in different objects
我正在尝试了解 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
这 3 个 "items" 始终由 TAB 分隔。我想要做的是声明一个 class、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 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
这 3 个 "items" 始终由 TAB 分隔。我想要做的是声明一个 class、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
收集器收集到一个列表。