ストリームにこの方法を適用します

ココナッツ :

私は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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=201661&siteId=1