如何检查二维数组是否为空

时间:2012-02-26 12:11:10

标签: java multidimensional-array

如何检查这个二维数组是否为空?

这是我的代码:

      String[][] user = new String[5][3];

        System.out.print(user.length);

            if (user.length == 5 ){
                System.out.print("\n empty");
            }

        for (int j=0; j<3; j++) {
            System.out.print(" " + user[0][j]+ "\n");
        }

,输出为:

5
 empty null null null

有没有人了解我的情况?

3 个答案:

答案 0 :(得分:3)

我认为你误解了Java中的某些东西。当你写:

String[][] user = new String[5][3];

user.length will always be 5 and 

user[0].length = user[1].length = ... = user[5].length = 3

如果要检查数组中的所有值是否为emty,您可以执行以下操作:

boolean notNull = false;
for(String[] array : user){
    for(String val : array){
      if(val!=null){
        notNull=true;
        break;
      }
    }
}
if(notNull){
  System.out.println("Array not empty)";
}else{
     System.out.println("Array empty");
}

另一种解决方案是使用Arrays.deepEquals

String[][] user = new String[5][3];
String[][] emptyReferenceForComparison= new String[5][3];
Arrays.deepEquals(user, emptyReferenceForComparison); // return true

答案 1 :(得分:1)

我建议使用Apache Commons Lang3。在此库中存在用于处理数组的实用程序。 该类的名称为ArrayUtils。样本:

    String[][] user = new String[5][3];
    for(String[] nestedArray : user)
        if(ArrayUtils.isEmpty(nestedArray))
            System.out.println("Is empty");

Apache Commans Lang3很好用。 有关更多信息,请参阅here

答案 2 :(得分:0)

有时在竞争性编程问题中,为了处理极端情况,有必要像下面的摘录中所示的某些代码。仅检查matrix.length==0是行不通的,因为它仅给出行是否为空,但其中可能存在一列。

if(matrix.length < 1 || matrix[0].length < 1) {
    return true; //empty
}