Wie kann ich in Java überprüfen, ob alle Elemete eines Boolean-Arrays true sind?
6 Antworten
Ich hätte ja gerne von java.util.Arrays die Methode binarySearch empfohlen, dummerweise (und ich meine wirklich dumm) ist boolean der einzige Typ, der nicht unterstützt wird -.-
Die naive Weise wäre...
boolean all_true = true;
for(boolean elem : your_array)
if(!elem){
all_true = false;
break;
}
For-Schleife oder Build-in-Funktion.
Ist die Anzahl an Elementen im Array zur Compilierzeit fest? Dann würde ich z.B. bei 8 Elementen einen Cast nach Byte machen und auf Gleichheit mit 0xFF prüfen. Dann geht alles auf einmal das hätte (theoretisch) konstante Laufzeit.
boolean[] arr = new boolean[]{true,false,true}; boolean allTrue = true; foreach(boolean b:arr) { allTrue &= b; } System.out.prinltn("alle true: "+allTrue);
Jetzt aus dem Kopf geschrieben ohne compilercheck.
Nicht die ganze Array zu durchlaufen rentiert sich nur bei entsprechend großen Arrays - da findest du mit einem Profiler andere Stellen, die deutlich mehr weh tun werden.
mit einer For-Schleife, die alle Elemente in dem array einzelnd abfragt.
Tipp: du kannst in der IF-Abfrage sowas benutzen:
result = result && array1[i];
For-Schleife schreiben, Array durchlaufen, Flag setzen, sofern array[i] != true
Weiß gerade nicht, ob es dafür schon eine vorgefertige Funktion gibt, aber so geht es auch.
Für ein binary Search muss die Array sortiert sein - daher macht das bei boolean arrays auch keinen Sinn.