应用方法流

问题描述 投票:3回答:1

我正在学习如何在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)”但是如何从我的文件中获取食物对象?

java java-8 java-stream
1个回答
6
投票

你可以map你的Stream<String>元素到Food实例(通过你的parseFoodLine方法),他们使用collect将它们收集到Set

food = stream.map(Food::parseFoodLine).collect(Collectors.toSet());

请注意,您的Food类应正确覆盖equalshashCode,以便将Food实例正确存储在HashSet中。

© www.soinside.com 2019 - 2024. All rights reserved.