繁体   English   中英

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

[英]How to get the length of any dimension of multidimensional array in Java?

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.Arraysjava.lang.reflect.Array 它们具有可以为您提供帮助的功能。 至少您的方法可能会缩短。

  1. 这是一项非常昂贵的操作...您确定无法避免吗? 您的意思是您将扫描整个多维数组直到所需的深度!
  2. 看来递归算法最适合于此
  3. 如果要使其递归,请考虑广度优先或深度优先(如果级别大于2)(这只会有助于使编写更加清晰...这对优化没有帮助,因为没有有很大的优化空间)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM