Wie kann ich in Java überprüfen, ob alle Elemete eines Boolean-Arrays true sind?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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;
}
Foosel  08.07.2015, 20:14

Für ein binary Search muss die Array sortiert sein - daher macht das bei boolean arrays auch keinen Sinn.

1
Youkakun  09.07.2015, 01:56
@Foosel

Ah, richtig, das habe ich grob übersehen. Es wird einem in Java aber auch nicht einfach gemacht, selbst die oft empfohlene Arrays.asList Funktion macht nicht mehr die direkte Umwandlung sondern empfängt nun variable Argumente.

0

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.