簡體   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