Java 返回给定索引i处子列表中的项目数(如果有),否则为0;

Java 返回给定索引i处子列表中的项目数(如果有),否则为0;,java,arraylist,junit,Java,Arraylist,Junit,我在痛风中工作时得到IndexOutOfBoundsException:Index-1超出长度1的界限 publicstaticintgetsize(数组列表,inti){ if(list==null | | list.size()==0){ 返回0; } if(!list.get(i).isEmpty()) 返回列表.get(i).size(); 返回0; } 如果传递函数的数组具有零索引,它将抛出该错误。0是第一项,因为没有第一项,所以它会抛出该错误 您会注意到,它可能会将该错误抛出for循

我在痛风中工作时得到IndexOutOfBoundsException:Index-1超出长度1的界限

publicstaticintgetsize(数组列表,inti){
if(list==null | | list.size()==0){
返回0;
}
if(!list.get(i).isEmpty())
返回列表.get(i).size();
返回0;
}

如果传递函数的数组具有零索引,它将抛出该错误。0是第一项,因为没有第一项,所以它会抛出该错误


您会注意到,它可能会将该错误抛出for循环。我会设置一个断点并运行调试器,以便在调用此函数时查看list的值。

如果将空列表作为第一个参数传入input,并将0作为第二个参数传入input,则会得到您所说的错误:IndexOutfBoundsException:索引0超出长度0的界限。也许你是在这种情况下?这里是一个Junit测试,它引发相同的异常:

  @Test
  public void getSizeTest() {
    getSize(new ArrayList<>(), 0);
  }

  public static int getSize (ArrayList<ArrayList<Integer>> list, int i) {
    for(int j = 0; j < list.get(i).size(); j++) {
      if(!(list.get(i).get(j).equals(0))) {
      }
      return(list.get(i).size());
    }
    return 0;
  }
@测试
public void getSizeTest(){
getSize(新的ArrayList(),0);
}
公共静态int getSize(数组列表,int i){
对于(int j=0;j
要获取子列表中的项目数,请执行以下操作。这将确保所有值都有效,并返回0或子列表的大小

public static int getSize (ArrayList<ArrayList<Integer>> list, int i) { 
   if (list != null && !list.isEmpty() && i < list.size() && i >= 0) {
         if (list.get(i) != null) {
             return list.get(i).size();
         }
   }
   return 0;  
}
publicstaticintgetsize(arraylistlist,inti){
if(list!=null&&!list.isEmpty()&&i=0){
if(list.get(i)!=null){
返回列表.get(i).size();
}
}
返回0;
}

您可以删除任何检查,以确定条件永远不会发生。

输入是什么?请注意,如果执行for循环,它总是在第一次迭代时返回。如果(!list.get(i).isEmpty())返回list.get(i).size(),则可以用
替换循环。为什么要创建一个方法?为什么不
int size=list.get(i).size()
?当然,假设至少有
i+1
列表,并且没有空值。或者要计算子列表中等于0的项数吗?我正在尝试返回索引I处的子列表中的项数。如果有,则返回0。也不导入列表
public static int getSize (ArrayList<ArrayList<Integer>> list, int i) { 
   if (list != null && !list.isEmpty() && i < list.size() && i >= 0) {
         if (list.get(i) != null) {
             return list.get(i).size();
         }
   }
   return 0;  
}