如何按首字符分组换行打印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
相关产品推荐
相关产品推荐

