You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8 Stream如何实现每输出5个单词后第6个单词换行打印

实现方案

你可以用AtomicInteger作为计数器实现换行逻辑,修改后的完整代码如下:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.Stream;

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());
        AtomicInteger count = new AtomicInteger(0);
        list.forEach(s -> {
            System.out.print(s + "(" + s.length() + ") ");
            // 每输出5个单词换行
            if (count.incrementAndGet() % 5 == 0) {
                System.out.println();
            }
        });
    }  
}

其他可选实现

如果不想引入原子类,也可以改用普通for循环遍历,性能开销更低,逻辑更直观:

for (int i = 0; i < list.size(); i++) {
    String word = list.get(i);
    System.out.print(word + "(" + word.length() + ") ");
    if ((i + 1) % 5 == 0) {
        System.out.println();
    }
}

内容的提问来源于stack exchange,提问作者Andris Zariņs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:15:03