提问人:coconut 提问时间:10/8/2018 最后编辑:ernest_kcoconut 更新时间:10/8/2018 访问量:105
将方法应用于流
Applying method to 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)”,但是如何从我的文件中获取食物对象?
答:
6赞
Eran
10/8/2018
#1
您可以将 to 实例的元素(通过您的方法)和它们用于将它们收集到一个 :map
Stream<String>
Food
parseFoodLine
collect
Set
food = stream.map(Food::parseFoodLine).collect(Collectors.toSet());
请注意,您的类应正确覆盖并正确,以便将实例正确存储在 .Food
equals
hashCode
Food
HashSet
评论
4赞
Ousmane D.
10/8/2018
更准确地说是可变的......即 但甚至可能无关紧要,具体取决于集合的用例,一旦它返回到调用方法。HashSet
.collect(Collectors.toCollection(HashSet::new));
food
上一个:对 grep 忽略的行进行计数
下一个:Java 的字符集/字符编码
评论
\\|
|