Java 将方法应用于流
我正在学习如何在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
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
集合返回调用方法后的用例。