2016-01-18 12 views
6

Ich wollte wissen, ob dieser Code gültig ist für die Überprüfung, ob ein Array leer ist, oder sollte ich auf Null überprüfen?wie nach einem leeren Array zu suchen Java

if(arrayName={}) 
    System.out.println("array empty"); 
else System.out.println("array not empty"); 

Vielen Dank!

+4

das hängt davon ab, was Sie von __empty__ bedeuten. – Nabin

+0

* "Ich wollte wissen, ob dieser Code gültig ist, um zu überprüfen, ob ein Array leer ist" * - der von Ihnen gepostete Code wird nicht einmal kompiliert.In der Zukunft ist es wahrscheinlich schneller, ** versuche nur, deinen Code zu kompilieren **, anstatt die Leute im Internet darum zu bitten, sie anzusehen. – DaoWen

Antwort

5

In Array-Klasse wir eine statische Variable definiert "Länge" haben, die die NumberOf Elemente in Array-Objekt hält. Sie können das verwenden, um die Länge zu finden:

if(arrayName.length == 0) 
    System.out.println("array empty"); 
else 
    System.out.println("array not empty"); 
0

Nein, weil Array-Literale nicht so funktionieren. Ersetzen Sie arrayName={} durch arrayName.length==0, und es sollte funktionieren.

0

Um leer versuchen, wie dies zu überprüfen:

if (arr.length == 0) { 
System.out.println("array is empty"); 
} 
+0

Dies ist ein Duplikat der anderen Antwort. – ostrichofevil

0

Wie poited aus in den anderen Antworten, die length Eigenschaft Array wird die Länge des Arrays geben. Es wird jedoch immer empfohlen, zu überprüfen, ob das Array null ist, bevor eine Operation ausgeführt wird. Andernfalls wird NullPointerException ausgelöst, wenn das Array null ist.

 if (array != null) { 
      if (array.length == 0) 
       System.out.println("Empty Array Size=0"); 
      else 
       System.out.println("Array Not Empty - Size = " + array.length); 

     } else 
      System.out.println("array is null"); 
    } 
0

proudandhonour Antwort ist auf dem richtigen Weg, aber für alle möglichen Werte von arrayName nicht funktionieren, und zwar, dass Fall, in denen arrayName nicht definiert worden und ist null. In diesem Fall wird der Code:

if(arrayName.length == 0) 
    System.out.println("array empty"); 
else 
    System.out.println("array not empty"); 

scheitern wird mit einer Antwort der NullPointerException. Zeitreise richtig für diesen Fall prüft und richtig behandelt alle möglichen Werte für arrayName. Der einzige Nachteil ist, dass sein Code ausführlicher ist, als er sein muss.

Java bietet Kurzschlussauswertung von booleschen Ausdrücken. Insbesondere ist das Ergebnis von false für alle möglichen Werte von xx. Wenn der erste Operand eines booleschen &&-Operators ausgewertet wird, ignoriert die JVM daher den zweiten Operanden, wenn der erste Operand den Wert false ergibt.

das Ausnutzen, können wir schreiben:

if (arrayName != null && arrayName.length > 0) 
    { System.out.println("The array length > 0"); } 
else 
    { System.out.println("The array is null or empty"); } 

Es gibt auch die ternäre Operator die für inlining if-then-else-Ausdrücke einen Mechanismus zur Verfügung stellt. Dies kann die Lesbarkeit unter Umständen verbessern:

System.out.println((arrayName == null) 
    ? "The arrayName variable is null" 
    : (arrayName.length < 1) 
     ? "The array length is zero" 
     : "The array length is " + String.valueOf(arrayName.length) 
); 
4

halte ich würde ArrayUtils.is leer durch Hinzufügen von Apache Commons Lang von hier http://commons.apache.org/proper/commons-lang/download_lang.cgi

Der große Vorteil besteht darin, dies für Sie das Array null prüft in einem sauberen und leicht lesbarer Weg.

Anschließend können Sie tun:

if (ArrayUtils.isEmpty(arrayName) { 
    System.out.printLn("Array empty"); 
} else { 
    System.out.printLn("Array not empty"); 
} 
Verwandte Themen