Java ArrayList of ArrayList:检查每个ArrayList的项数是否相同

Java ArrayList of ArrayList:检查每个ArrayList的项数是否相同,java,algorithm,data-structures,arraylist,Java,Algorithm,Data Structures,Arraylist,我有一个数组列表。我想确保每个组成的ArrayList都有相同数量的项。有没有办法在不到n的时间内做到这一点!时间?绝对!一次迭代一个ArrayLists。存储第一个ArrayList的大小,然后确认所有其他ArrayList的大小与第一个列表的大小匹配。所需的总时间为O(n),其中n是列表的数量 例如: public static boolean listsHaveSameSize(List<List<?>> allLists) { List<?>

我有一个数组列表。我想确保每个组成的ArrayList都有相同数量的项。有没有办法在不到n的时间内做到这一点!时间?

绝对!一次迭代一个
ArrayList
s。存储第一个
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;
}
publicstaticbooleanlistshavesamesize(列表:allLists){
if(first==null){
第一个=列表;
}else if(list.size()!=first.size()){
返回false;
}
}
返回true;
}

希望这有帮助

绝对!一次迭代一个
ArrayList
s。存储第一个
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;
}
publicstaticbooleanlistshavesamesize(列表:allLists){
if(first==null){
第一个=列表;
}else if(list.size()!=first.size()){
返回false;
}
}
返回true;
}

希望这有帮助

为什么这需要O(n!)时间?因为我写简单代码的时间太长了,我的思想也融化了。为什么这需要O(n!)时间?因为我写简单代码的时间太长了,我的思想融化了。你需要小心
否则
分支--
列表
可以是
null
@TedHopp-我假设顶级列表不包含任何null列表;假设这是不合理的吗?不知道是否不合理,但防御性编码在这里并不是一个负担。它只需要一个单独的
else if(list==null){return false;}
步骤。如果OP需要检查内容的一致性,那么就没有100%的控制权来开始排名靠前的列表的内容,所以我觉得这是谨慎的。顺便说一句,最好先存储
的大小,一旦它不是
null
,然后使用它,而不是反复调用
size()
@TedHopp,这真的是关于合同的,不是吗?我宁愿抛出
NPE
,如果(…!=null)
在我的code@MiserableVariable-绝对是关于合同的。有几种可能性:可以忽略
null
列表;它可以被视为一个空列表;它可以强制
false
返回值(可能只有在至少有一个非
null
元素的情况下);它可能会抛出一个NPE。根据上下文,其中任何一个都可能有意义。由于没有指定合同,我只是简单地指出代码(如所写)假设了最后一种可能性。您需要小心
else
分支--
列表可以
null
@TedHopp-我假设顶级列表不包含任何null列表;假设这是不合理的吗?不知道是否不合理,但防御性编码在这里并不是一个负担。它只需要一个单独的
else if(list==null){return false;}
步骤。如果OP需要检查内容的一致性,那么就没有100%的控制权来开始排名靠前的列表的内容,所以我觉得这是谨慎的。顺便说一句,最好先存储
的大小,一旦它不是
null
,然后使用它,而不是反复调用
size()
@TedHopp,这真的是关于合同的,不是吗?我宁愿抛出
NPE
,如果(…!=null)
在我的code@MiserableVariable-绝对是关于合同的。有几种可能性:可以忽略
null
列表;它可以被视为一个空列表;它可以强制
false
返回值(可能只有在至少有一个非
null
元素的情况下);它可能会抛出一个NPE。根据上下文,其中任何一个都可能有意义。由于没有指定合同,我只是简单地指出代码(如所写)假设了最后一种可能性。