如何在Java中获得多维数组任意维的长度?
JDK或流行库中是否有现成的实现 我编写了以下函数:如何在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() ) {
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;