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

Java中如何打印存储在HashMap中的二维数组键值对?

问题解决:正确打印HashMap中数组类型的键值对

你看到的[Ljava.lang.String;@372f7a8d这类输出,是因为Java数组默认的toString()方法不会输出数组内容,而是返回数组的类型标识与内存哈希值。要正确打印数组元素,需借助java.util.Arrays类的工具方法。

修改后的打印代码

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        String[][] myExampleArray = {{"string1", "string2", "string100"}, {"string1", "string2", "string100"}};
        HashMap<String[], String[]> mappedArrays = new HashMap<>();
        mappedArrays.put(myExampleArray[0], myExampleArray[1]);

        for (Map.Entry<String[], String[]> entry : mappedArrays.entrySet()) {
            // 用Arrays.toString()将数组转为可读字符串
            String keyStr = Arrays.toString(entry.getKey());
            String valueStr = Arrays.toString(entry.getValue());
            System.out.println(keyStr + " ==== " + valueStr);
        }
    }
}

执行后会输出类似结果:

[string1, string2, string100] ==== [string1, string2, string100]

额外提醒:数组作为HashMap键的隐患

Java数组的equals()和hashCode()方法是基于对象引用实现的,而非数组内容。这意味着即便你创建一个内容完全相同的新数组,用它调用mappedArrays.get(newKeyArray)也无法获取对应值——因为两个数组的引用地址不同。如果需要基于内容匹配HashMap的键,建议改用List<String>替代数组,ArrayList等集合类的equals()和hashCode()是基于内容实现的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:25:25