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

如何按首字符分组换行打印Java的ArrayList字符串元素

实现按首字符分组换行打印ArrayList元素

方法一:传统循环遍历判断

通过记录当前分组的首字符,遍历元素时对比首字符来决定是否换行,适合基础场景:

if (seatsList.isEmpty()) {
    return;
}

// 初始化当前首字符为第一个元素的首字母
char currentChar = seatsList.get(0).charAt(0);
StringBuilder line = new StringBuilder();

for (String seat : seatsList) {
    char seatChar = seat.charAt(0);
    if (seatChar != currentChar) {
        // 打印当前行并重置
        System.out.println(line.toString());
        line.setLength(0);
        currentChar = seatChar;
    }
    if (line.length() > 0) {
        line.append(", ");
    }
    line.append(seat);
}
// 打印最后一行
System.out.println(line.toString());

方法二:Java 8+ Stream分组实现

利用Stream的Collectors.groupingBy按首字符分组,再按字母顺序遍历分组结果打印,代码更简洁:

import java.util.stream.Collectors;

// 按首字符分组
Map<Character, List<String>> groupedSeats = seatsList.stream()
        .collect(Collectors.groupingBy(seat -> seat.charAt(0)));

// 按A-D的顺序遍历分组并打印
for (char c = 'A'; c <= 'D'; c++) {
    List<String> group = groupedSeats.get(c);
    if (group != null) {
        System.out.println(String.join(", ", group));
    }
}

补充说明

  • 方法一仅需一次遍历,无额外依赖,执行效率较高;
  • 方法二借助Stream API简化代码,但需手动按字母顺序遍历分组——因为groupingBy默认返回的HashMap是无序的,直接遍历keySet可能打乱A-D的顺序。

内容的提问来源于stack exchange,提问作者ruh01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:48:22