2013-01-08 110 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()'。 –

相关问题