coc*_*nut 3 java java-8 java-stream
我正在学习如何在Java中使用流.我有一个文件,其中包含一些我想在某些数据结构中加载的信息,例如Set.
我写了一个函数来解析每一行.
private Food parseFoodLine(String line){
String[] items = line.split("|");
Food food = #Parsing done here.
return food;
}
Run Code Online (Sandbox Code Playgroud)
但是我如何通过该方法放置每一行?
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");
}
}
Run Code Online (Sandbox Code Playgroud)
我明白我应该做"stream.forEach(food :: add)"但是如何从我的文件中获取食物对象?
你可以map你的元素Stream<String>,以Food实例(通过你的parseFoodLine这些方法),并使用collect以将其收集到Set:
food = stream.map(Food::parseFoodLine).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
请注意,您的Food类应该覆盖equals并hashCode正确,以便将Food实例正确存储在HashSet.
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |