Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将方法应用于流_Java_Java 8_Java Stream - Fatal编程技术网

Java 将方法应用于流

Java 将方法应用于流,java,java-8,java-stream,Java,Java 8,Java Stream,我正在学习如何在Java中使用流。我有一个包含一些信息的文件,我想在一些数据结构中加载这些信息,例如,一个集合 我编写了一个函数来解析每一行 private Food parseFoodLine(String line){ String[] items = line.split("|"); Food food = #Parsing done here. return food; } 但是我如何让每一行都通过这种方法呢 private Set<Food> l

我正在学习如何在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");
    }
}
private Set loadFood(){
Set food=新HashSet();
try(Stream=Files.line(path.get(“myFile”)){
forEach(parseFoodLine());
}捕获(IOE异常){
System.err.println(“错误解析文件”);
}
}

我知道我应该执行“stream.forEach(food::add)”,但如何从文件中获取food对象呢

您可以
流的
元素映射到
食物
实例(通过
parseFoodLine
方法),并使用
collect
将其收集到
集合中:

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

请注意,您的
Food
类应该正确重写
equals
hashCode
,以便
Food
实例正确存储在
HashSet

中:您可能希望使用
\\\\\\\\
而不是
作为拆分模式。谢谢@AndyTurner!更准确地说是可变的
哈希集
。。。i、 e.
.collect(Collectors.toCollection(HashSet::new))
但可能甚至不重要,这取决于
food
集合返回调用方法后的用例。