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;
}

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

1
@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
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.

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.

z.b. mit ner forschleife, deren zählvariable solang ist wie das array.. dann fragst du ab mit if(variable==true) .. und meinetwegen lässte für jedes true die "stimmts variable" inkrementieren. ist am ende  stimmts==länge des arrays dann warn alle true... hässlicher lösungs ansatz, aber läuft xD

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.

Was möchtest Du wissen?