我正在学习如何在 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
类应该覆盖 equals
和 hashCode
正确顺序 Food
实例正确存储在 HashSet
中.
关于java - 将方法应用于流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700012/