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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:54:08