3
どのように私はがmonitoredDataクラスは、これらの3つのプライベート変数がある、ストリーム使っArrayList <MonitoredData>
に私は、テキストファイルから読み込むすべての要素を置くことができます:private Date startingTime, Date finishTime, String activityLabel
を。スプリットストリームやテキストファイルからリストに入れ
Activities.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
など....
最初の2つの文字列を1つの空白で区切られ、その後、2つのタブ、1つのスペース、2つのタブ。あなたは一例で、私はString[]
からMonitoredData
を作成するFunction
を使用しています、MonitoredData
を作成するための工場を紹介必要
String fileName = "D:/Tema 5/Activities.txt";
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
list = (ArrayList<String>) stream
.map(w -> w.split("\t\t")).flatMap(Arrays::stream) // \\s+
.collect(Collectors.toList());
//list.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
'w.split()'は3つの文字列の配列を生成します。その配列を 'MonitoredData'にマップする必要があります。 'MonitoredData'に配列を取るコンストラクタを渡すか、コンストラクタを呼び出すラムダを渡します。 – Arkadiy
' Collectors.toList() 'の結果を' ArrayList'にキャストしないでください。宣言された型が 'ArrayList'ではなく' List'である理由があります。結果が 'ArrayList'になるという保証はありません。 – Holger
ご協力ありがとうございます@Arkadiy! – Nico