Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中获得多维数组任意维的长度?_Java_Arrays_Multidimensional Array - Fatal编程技术网

如何在Java中获得多维数组任意维的长度?

如何在Java中获得多维数组任意维的长度?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,JDK或流行库中是否有现成的实现 我编写了以下函数: public static int length(Object array, int level) { if( level < 0 ) { throw new IllegalArgumentException(); } else if( level == 0 ) { if( !array.getClass().isArray() ) {

JDK或流行库中是否有现成的实现

我编写了以下函数:

public static int length(Object array, int level) {
        if( level < 0 ) {
            throw new IllegalArgumentException();
        }
        else if( level == 0 ) {
            if( !array.getClass().isArray() ) {
                throw new IndexOutOfBoundsException();
            }
            else {
                return Array.getLength(array);
            }
        }
        else {
            if( !array.getClass().isArray() ) {
                throw new IndexOutOfBoundsException();
            }
            else {

                int length = Array.getLength(array);
                int nextlength, maxnextlength = 0;
                Object element;
                for(int i=0; i<length; ++i) {
                    element = Array.get(array, i);
                    if( element != null ) {
                        nextlength = Array.getLength(element);
                        if( nextlength > maxnextlength ) {
                            maxnextlength = nextlength;
                        }
                    }
                }
                return maxnextlength;
            }
        }
    }
它是否正确且最佳?

请查看java.util.Array和java.lang.reflect.Array。它们具有可以帮助您的功能。至少你的方法可以缩短

这是一个非常昂贵的操作。。。你确定你无法避免吗? 你是在暗示你将扫描整个多维空间 数组的深度达到你想要的长度! 看来递归算法最适合这种情况 如果您想使其递归,请考虑广度优先或 深度优先如果级别超过2,这只会有助于提高书写的清晰度。。。这对优化没有帮助,因为没有太多的优化空间
看起来这属于代码检查,而不是代码检查……您可能希望将其重命名为maxLength,因为给定维度可能具有不同的长度,并且您正在查找并返回该级别上找到的最大长度。e、 你的方法为int[]arr={{{1},{1,2},{1,2,3}返回3;System.out.printlnlengtharr,1;