流的应用方法

时间:2018-10-08 10:13:08

标签: java java-8 java-stream

我正在学习如何在Java中使用流。我有一个文件,其中包含一些我想在某种数据结构中加载的信息,例如Set。

我写了一个函数来解析每一行。

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(food :: add)”,但是如何从文件中获取食物对象?

1 个答案:

答案 0 :(得分:6)

您可以mapStream<String>实例的元素Food(通过您的parseFoodLine方法),它们使用collect将它们收集到{ {1}}:

Set

请注意,您的food = stream.map(Food::parseFoodLine).collect(Collectors.toSet()); 类应正确覆盖Foodequals,以便将hashCode实例正确存储在Food中。