【发布时间】:2021-12-28 20:31:57
【问题描述】:
public class Histogram {
public static void main(String[] args) throws IOException {
Stream<String> stream = Files.lines(Paths.get("words.txt"));
ArrayList<String> list = (ArrayList<String>) stream
.map(w -> w.split("\\.|\\s+|,")).flatMap(Arrays::stream)
.filter(x-> x.length() != 0)
.collect(Collectors.toList());
list.forEach(s -> System.out.print(s + "(" + s.length() + ") "));
}
}
现在我将所有结果放在一行中。
我如何在这个 Java 流 8 中创建逻辑,将 forEach 循环中的每 5 个单词放入换行符 (System.out.println)。
每六个单词打印一个新行。
【问题讨论】:
-
使用常规 for 循环(一般为
list.forEach或for-each)隐藏迭代器;所以你不知道你什么时候在第六个字。 -
这能回答你的问题吗? Take every nth element from a Java 8 stream
-
不要将
collect(Collectors.toList())的结果转换为ArrayList。文档没有指定您可以期待什么列表,也没有理由不使用List<String> list = …。顺便说一句,你可以写! x.isEmpty()而不是x.length() != 0
标签: java lambda foreach collections java-stream