如何检查这个二维数组是否为空?
这是我的代码:
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
有没有人了解我的情况?
答案 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
}