java - 将方法应用于流

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

最佳答案

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

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

请注意您的 Food类应该覆盖 equalshashCode正确顺序 Food实例正确存储在 HashSet 中.

关于java - 将方法应用于流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700012/

相关文章:

java - Hibernate 5+ 未映射 MySQL 表

java - MongoCursor 没有 count() 方法?

Java 8 增强了带有索引/范围的 for 循环

Java 8 时间 - 将 Javascript 的 Date().getTimezoneOffset 转换为 ZoneOffset

java - 流式传输 map 列表并收集特定 key

java - Eclipse 和 Java : Is there an event monitoring feature?

Java swing 与远程 mysql

java - 将列表拆分为重复列表和非重复列表 Java 8

java - 将 java 7 嵌套 for 循环转换为使用 java 8 流 API

java - Java中Streams的正确使用