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

如何将HashMap<String, ArrayList>转换为三维数组?附示例

实现HashMap到指定三维数组的转换

没问题,这个转换逻辑其实很清晰,咱们用Java来一步步实现:

核心思路

你的目标是把HashMap<String, ArrayList<String>>里的每一组键值对,转换成[[[服务名称]], [人员列表]]这样的三维数组元素,整体再组合成大的三维数组。关键步骤就是遍历HashMap的每个键值对,分别处理服务名称和人员列表,再组装成目标结构。

完整代码示例

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class ServiceConverter {
    public static void main(String[] args) {
        // 初始化你的原始HashMap
        HashMap<String, ArrayList<String>> serviceMap = new HashMap<>();
        serviceMap.put("House cleaning", new ArrayList<>() {{
            add("Jack");
            add("Maria");
        }});
        serviceMap.put("Computer lessons", new ArrayList<>() {{
            add("Leon");
            add("Maria");
        }});
        serviceMap.put("Data recovery service", new ArrayList<>() {{
            add("Leon");
        }});
        serviceMap.put("Computer repair", new ArrayList<>() {{
            add("Jack");
            add("Leon");
        }});
        serviceMap.put("Handyman", new ArrayList<>() {{
            add("Jack");
        }});

        // 初始化三维数组,长度等于HashMap的键值对数量
        String[][][] resultArray = new String[serviceMap.size()][][];
        int currentIndex = 0;

        // 遍历每个键值对进行转换
        for (Map.Entry<String, ArrayList<String>> entry : serviceMap.entrySet()) {
            // 处理服务名称:包装成[[服务名]]的二维数组结构
            String[][] serviceNameSection = {{entry.getKey()}};
            // 处理人员列表:把ArrayList转成String数组,再包装成[人员数组]的二维数组
            String[][] peopleSection = {entry.getValue().toArray(new String[0])};
            // 把两个部分组合成一个三维数组元素,存入结果
            resultArray[currentIndex++] = new String[][]{serviceNameSection, peopleSection};
        }

        // 打印验证结果(和你期望的格式一致)
        System.out.println(java.util.Arrays.deepToString(resultArray));
    }
}

关键细节说明

  • 遍历方式:用entrySet()遍历HashMap,能同时获取键和值,比单独遍历键再取值更高效。
  • ArrayList转数组:entry.getValue().toArray(new String[0])是Java中把集合转数组的简洁写法,Java会自动根据集合大小创建合适长度的数组。
  • 顺序问题:因为HashMap本身是无序的,所以输出的数组元素顺序可能和你存入的顺序不同。如果需要固定顺序,把HashMap换成LinkedHashMap即可,它会保留插入顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:21:56