2013-01-08 109 views

回答

3

絕對!一次遍歷一個ArrayList。存儲第一個ArrayList的大小,然後確認所有其他ArrayList的大小與第一個列表的大小相匹配。所需的總時間是O(n),其中n是列表的數量。

例如:

public static boolean listsHaveSameSize(List<List<?>> allLists) { 
    List<?> first = null; 
    for (List<?> list: allLists) { 
     if (first == null) { 
      first = list; 
     } else if (list.size() != first.size()) { 
      return false; 
     } 
    } 
    return true; 
} 

希望這有助於!

+0

您需要注意'else'分支 - 'list'可以是'null'。 –

+0

@ TedHopp-我假定頂層列表不包含任何空列表;假設這是否是不合理的? – templatetypedef

+0

不知道,如果它不合理,但防守編碼在這裏不是這樣的負擔。它只需要一個單獨的'else if(list == null){return false; ''一步。如果OP需要檢查內容的一致性,那麼首先不能100%控制頂部列表的內容,所以對我來說似乎是謹慎的。順便說一下,一旦它不是'null'就可以存儲'first'的大小,並且使用它而不是重複調用'size()'。 –

相關問題