ココナッツ :
私はJavaでストリームを使用する方法を学んでいます。私は、たとえば、いくつかのデータ構造にロードすることをいくつかの情報、設定とファイルを持っています。
私はそれぞれの行を解析する機能を書きました。
private Food parseFoodLine(String line){
String[] items = line.split("|");
Food food = #Parsing done here.
return food;
}
しかし、どのように私はその方法を介して各ラインを入れていますか?
private Set<Food> loadFood(){
Set<Food> food = new HashSet<>();
try (Stream<String> stream = Files.lines(Paths.get("myFile"))) {
stream.forEach(parseFoodLine());
} catch (IOException e) {
System.err.println("Error parsing file");
}
}
私は「stream.forEach(食品::追加)」を行う必要があります理解しますが、どのように私は私のファイルから食品オブジェクトを取得できますか?
彼らは次のとおりでした:
あなたはできるmap
あなたの要素Stream<String>
へのFood
(あなたを経由してインスタンスparseFoodLine
メソッド)と、それらが使用collect
にそれらを収集するためにSet
:
food = stream.map(Food::parseFoodLine).collect(Collectors.toSet());
あなたのことに注意してくださいFood
クラスがオーバーライドする必要がありますequals
し、hashCode
ために適切にFood
インスタンスが正しくに格納しますHashSet
。