Java поток разделяет линии и хранит в разных объектах - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь понять потоки 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 "элемента" всегда разделяются вкладкой.То, что я хочу сделать, это объявить класс MonitoredData с атрибутами (типа String)

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.Как мне это сделать?

1 Ответ

0 голосов
/ 18 мая 2018

Все, что вам нужно сделать, это добавить еще одну map операцию, как показано ниже:

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

, затем собрать в список с помощью toList сборщика.

...