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

Java:Object存储的多维整数数组遍历打印实现问题咨询

任意维度整数数组的维度判断与扁平化遍历解决方案

问题核心

将数组转为Object类型后无法直接通过下标访问元素,本质是编译器无法识别Object变量的数组特性,必须借助Java反射API中的java.lang.reflect.Array类来操作数组的长度和元素。

实现代码与说明

1. 数组维度判断方法

通过递归检查元素类型,直到遇到非数组类型,最终返回数组的维度:

import java.lang.reflect.Array;

public static int dimensionOf(Object array) {
    if (!array.getClass().isArray()) {
        return 0;
    }
    Class<?> componentType = array.getClass().getComponentType();
    // 递归判断元素是否为数组,累加维度
    return componentType.isArray() ? 1 + dimensionOf(Array.newInstance(componentType, 0)) : 1;
}

2. 扁平化遍历方法(无嵌套for循环、不修改原数组)

利用反射API获取数组长度和元素,结合递归实现任意维度数组的扁平化遍历:

public static void loopThroughArray(Object array) {
    // 非数组元素直接输出
    if (!array.getClass().isArray()) {
        System.out.print(array + " ");
        return;
    }
    // 获取当前数组长度
    int len = Array.getLength(array);
    // 遍历每个元素,递归处理(元素可能是数组或整数)
    for (int i = 0; i < len; i++) {
        loopThroughArray(Array.get(array, i));
    }
}

完整测试示例

public class ArrayHandler {
    public static void main(String[] args) {
        // 测试二维数组
        int[][] twoDArr = {{10, 20, 30}, {40, 50}};
        // 测试三维数组
        int[][][] threeDArr = {{{1, 2}, {3}}, {{4, 5, 6}}};

        System.out.println("二维数组维度:" + dimensionOf(twoDArr));
        System.out.print("二维数组元素:");
        loopThroughArray(twoDArr);
        System.out.println();

        System.out.println("三维数组维度:" + dimensionOf(threeDArr));
        System.out.print("三维数组元素:");
        loopThroughArray(threeDArr);
    }

    // 上述dimensionOf和loopThroughArray方法放在这里
}

关键注意点

  • 无需手动编写多层for循环,递归逻辑自动适配任意维度
  • 使用反射API操作数组,完全避免Object类型数组的下标访问报错
  • 遍历过程仅读取元素,不修改原数组的结构或内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:25:22