Java如何按字符串长度分组打印数组元素,相同长度每组分一行
按字符串长度分组打印实现方案
核心逻辑为先按字符串长度对数组元素分组,再逐组拼接打印,以下是两种可直接运行的实现:
方式1:HashMap通用实现(兼容所有Java版本)
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class GroupPrintDemo { public static void main(String[] args) { String[] arr = {"a", "b", "cc", "dd", "ee", "fff", "hhh"}; // 键:字符串长度,值:对应长度的字符串集合 Map<Integer, List<String>> groupMap = new HashMap<>(); // 遍历数组完成分组 for (String str : arr) { int len = str.length(); groupMap.computeIfAbsent(len, k -> new ArrayList<>()).add(str); // 低版本Java不支持computeIfAbsent可替换为: // if (!groupMap.containsKey(len)) { // groupMap.put(len, new ArrayList<>()); // } // groupMap.get(len).add(str); } // 逐组打印 for (List<String> group : groupMap.values()) { System.out.println(String.join(" ", group)); } } }
方式2:Java 8+ 流式简洁实现
import java.util.Arrays; import java.util.stream.Collectors; public class GroupPrintDemo { public static void main(String[] args) { String[] arr = {"a", "b", "cc", "dd", "ee", "fff", "hhh"}; // 流式处理完成分组+打印 Arrays.stream(arr) .collect(Collectors.groupingBy(String::length)) .values() .forEach(group -> System.out.println(String.join(" ", group))); } }
两种实现的输出结果均符合要求:
a b cc dd ee fff hhh
内容的提问来源于stack exchange,提问作者gianni85
相关产品推荐
相关产品推荐

