Boolsche Ausdrücke minimieren

membersound

Bekanntes Mitglied
Hallo,

kann ich a == b || a == c irgendwie minimieren? Rein logisch würde ich halt a == (b || c) schreiben, aber das ist wohl verkehrt. Gibt es also keine Möglichkeit der Minimierung?

Danke
 

njans

Top Contributor
Mir ist da keine bekannt, außer die ganze Bedingung einfach als Methode zu machen, was etwas übersichtlicher ist.
Jedoch sowas, was du hier vorschlägst, habe ich (leider) noch nicht bei Java gefunden.
 

bERt0r

Top Contributor
Ich glaube da denkst du zu mathematisch. Egal wie du das schreibst, der Prozessor muss das dann ohnehin einzeln vergleichen.
 

Ark

Top Contributor
kann ich a == b || a == c irgendwie minimieren? Rein logisch würde ich halt a == (b || c) schreiben, aber das ist wohl verkehrt. Gibt es also keine Möglichkeit der Minimierung?
Was verstehst du denn unter "Minimierung", auf welche Größe beziehst du dich dabei? Länge des Ausdrucks im Quelltext? Anzahl der Rechenoperationen im Kompilat? Maximale/minimale/durchschnittliche Anzahl der tatsächlich ausgeführten Rechenoperationen? Es gibt bestimmt noch mehr Möglichkeiten, aber diese fallen mir spontan ein.

Was ist denn überhaupt das Problem? Tippfaulheit? Geschwindigkeit? Leserlichkeit?

Ohne mehr Kontext und Benennung des Problems kann man da schlecht eine im Allgemeinen "gute" Richtung angeben. Du müsstest also schon etwas mehr sagen.

Ark
 
Y

YoYoYo

Gast
Eins vorweg: Jetzt kommt Pseudocode, welcher so in Java nicht funktioniert

Rein von der Lesbarkeit des Codes her wäre ein Konstrukt der Art
Code:
if ( [b, c, d, e] contains a ) then ...
bzw. als Methode aller Arrays
Code:
if ( [b, c, d, e].contains(a) ) then ...
bzw. die umgekehrte Notation (zu welcher eine Implementierung als Methode aller einzelnen Elemente wenig sinnvoll ist)
Code:
# welche konkrete Bezeichnung hier am sinnvollsten ist, kann man beim Design einer entsprechenden Sprache diskutieren
if ( a is_in [b, c, d, e] ) then ...
if ( a element_of [b, c, d, e] ) then ...
if ( a is_element_of [b, c, d, e] ) then ...
in der Tat eine feine Sache, da es (insbesondere die letzte Möglichkeit) einer natürlichsprachigen Formulierung entspräche (einfach mal zum Test die Codezeilen laut vorlesen). Ist technisch problemlos umsetzbar und existiert so ähnlich auch schon. Nun ist Java aber Java und nicht sowas wie Ruby und damit hat sich das Thema dann auch schon wieder erledigt, bzw. muss über Umwege wie Methoden oder Fremdbibliotheken gelöst werden.
 

Ark

Top Contributor
Also wenn ich a mit b, c, d, e vergleichen müsste, je nach den Objekten wird der Ausdruckt dann ziemlich unübersichtlich.
Vielleicht ist ja das, was du suchst, eine Konstruktion mit [c]switch[/c]. Vielleicht geht das aber nicht, und du suchst etwas wie ein Set oder BitSet. Vielleicht brauchst du tatsächlich eine Liste, aber die kann dann vielleicht auch sortiert sein (kann das Suchen beschleunigen). Vielleicht geht es aber tatsächlich auch nicht besser, und du suchst eigentlich eine if-else-Kaskade.

Je nach Situation (die wir hier leider nicht sehen) kann das eine oder andere sinnvoll oder weniger sinnvoll sein.

Ark
 
Y

YoYoYo

Gast
Wobei das von Landei vorgeschlagene
Code:
Arrays.asList(b,c,d,e,f).contains(a)
eine ziemliche brauchbare Alternative darstellt. Kürzer und knackiger wirst du es in Java kaum noch hinbekommen.
 

Ark

Top Contributor
Kürzer und knackiger wirst du es in Java kaum noch hinbekommen.
Kann sein, muss nicht sein. (Die Situation kennen wir ja nicht.) Eine Schleife mit Stringkonkatenation à la [c]+=[/c] ist zwar auch kurz und knackig, aber auch ein sehr häufiger Grund für Themen im Anfängerforum.

Grundsätzlich widerstrebt zumindest mir(!) bei diesem Vorschlag die Vorstellung, dass jedes Mal ein neues Array und ein neues List-Objekt erzeugt werden. Außerdem liegt die Suchkomplexität in O(n); das lässt sich zwar nicht unbedingt, aber je nach Situation eben doch vermeiden. (Wenn die Liste wirklich nur aus 4 Elementen besteht, kann es egal sein.)

Ark
 

membersound

Bekanntes Mitglied
Allgemein kam mir diese Frage schon öfters in den Sinn, bei verschiedenen Situationen.

Konkret geht es diesmal um ein KeyEvent, welches auf verschiedene Tasten hin eine Methode aufrufen soll.
Java:
evt.getKeyCode() == KeyEvent.VK_DELETE || [...] ESCAPE, ...
Da hätte ich es praktisch gefunden, wenn ich einfach die KeyEvents aufzählen könnte.
 
B

bygones

Gast
Allgemein kam mir diese Frage schon öfters in den Sinn, bei verschiedenen Situationen.

Konkret geht es diesmal um ein KeyEvent, welches auf verschiedene Tasten hin eine Methode aufrufen soll.
Java:
evt.getKeyCode() == KeyEvent.VK_DELETE || [...] ESCAPE, ...
Da hätte ich es praktisch gefunden, wenn ich einfach die KeyEvents aufzählen könnte.

was du bei einem switch/case ja machen kannst
 

Ark

Top Contributor
Konkret geht es diesmal um ein KeyEvent, welches auf verschiedene Tasten hin eine Methode aufrufen soll.
Java:
evt.getKeyCode() == KeyEvent.VK_DELETE || [...] ESCAPE, ...
Da hätte ich es praktisch gefunden, wenn ich einfach die KeyEvents aufzählen könnte.
Wie bygones schon angedeutet hat, hier etwas konkreter:
Java:
switch(evt.getKeyCode()){
    case KeyEvent.VK_DELETE:
    case KeyEvent.VK_ESCAPE:
    case KeyEvent.VK_CLEAR:
        System.out.println("get me outta here!");
        break;
    case KeyEvent.VK_F1:
        System.out.println("help me!");
        break;
    default:
        System.out.println("I totally don't understand!");
        break;
}
Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Boolsche Ausdrücke Java Basics - Anfänger-Themen 3
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
C Boolsche Ausdrücke - Wo ist mein Fehler? Java Basics - Anfänger-Themen 14
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
C Erste Schritte Boolsche For-Schleife soll Ausgaben mitzählen Java Basics - Anfänger-Themen 8
S Prüfungsvorbereitung Januar ( Thema Ausdrücke ) Java Basics - Anfänger-Themen 14
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
W Reguläre Ausdrücke Java Basics - Anfänger-Themen 1
W Reguläre Ausdrücke Java Basics - Anfänger-Themen 1
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
G Java Lambda Ausdrücke Java Basics - Anfänger-Themen 19
A Lambda-Ausdrücke Java Basics - Anfänger-Themen 6
K FYI: Reguläre Ausdrücke nutzen ja/nein Java Basics - Anfänger-Themen 2
G Lambda Ausdrücke Java Basics - Anfänger-Themen 2
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
B Erste Schritte Boolesche Ausdrücke & Gesetze Java Basics - Anfänger-Themen 3
B Reguläre Ausdrücke Java Basics - Anfänger-Themen 2
S Lambda Ausdrücke Streams Java Basics - Anfänger-Themen 6
D Variablen Ausdrücke Java Basics - Anfänger-Themen 6
P Reguläre Ausdrücke und Korrektheit Java Basics - Anfänger-Themen 2
0 Reguläre Ausdrücke bzw. Zahlenformat im String Java Basics - Anfänger-Themen 7
M Lambda - Ausdrücke verstehen Java Basics - Anfänger-Themen 2
G Reguläre Ausdrücke Zeichenketten Java Basics - Anfänger-Themen 12
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
J Reguläre Ausdrücke Java Basics - Anfänger-Themen 3
C Reguläre-Ausdrücke Java Basics - Anfänger-Themen 5
N Lambda Ausdrücke richtig schreiben Java Basics - Anfänger-Themen 4
F Methoden Lambda Ausdrücke Methodensignatur Java Basics - Anfänger-Themen 6
P Ausdrücke berechnen Java Basics - Anfänger-Themen 2
J Java 8 Lamda ausdrücke Java Basics - Anfänger-Themen 9
J reguläre Ausdrücke Java Basics - Anfänger-Themen 1
C Lambda Ausdrücke Java Basics - Anfänger-Themen 1
B Reguläre Ausdrücke Java Basics - Anfänger-Themen 3
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
H Erste Schritte Von jpg zu jpeg // reguläre Ausdrücke Java Basics - Anfänger-Themen 3
TheSorm Java 8 Lambda-Ausdrücke Java Basics - Anfänger-Themen 9
K Reguläre Ausdrücke Java Basics - Anfänger-Themen 3
K Reguläre Ausdrücke Java Basics - Anfänger-Themen 6
S Anweisungen Ausdrücke Java Basics - Anfänger-Themen 7
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
K Ausdrücke auswerten Java Basics - Anfänger-Themen 8
B Reguläre Ausdrücke Java Basics - Anfänger-Themen 5
K Reguläre Ausdrücke Java Basics - Anfänger-Themen 5
S arithmetische Ausdrücke prüfen Java Basics - Anfänger-Themen 11
C Reguläre Ausdrücke: string.matches() und gefangene Gruppen Java Basics - Anfänger-Themen 12
S Reguläre Ausdrücke richtig einsetzten Java Basics - Anfänger-Themen 5
T Reguläre Ausdrücke Java Basics - Anfänger-Themen 18
0 Reguläre Ausdrücke und Funktionen Java Basics - Anfänger-Themen 2
S Datentypen Operatoren und Ausdrücke (formel richtig rechnen) Java Basics - Anfänger-Themen 8
D Reguläre Ausdrücke Java Basics - Anfänger-Themen 3
S Reguläre Ausdrücke Java Basics - Anfänger-Themen 16
A Reguläre Ausdrücke Frage Java Basics - Anfänger-Themen 3
E Reguläre Ausdrücke mit sehr variablen Eigenschaften Java Basics - Anfänger-Themen 2
T Ausdrucksparser für Mathematische Ausdrücke Java Basics - Anfänger-Themen 15
N Ausdrücke Java Basics - Anfänger-Themen 6
N Reguläre Ausdrücke - bekomme Suchkriterium nicht hin Java Basics - Anfänger-Themen 3
J Reguläre Ausdrücke in Java Java Basics - Anfänger-Themen 2
J Reguläre Ausdrücke Java Basics - Anfänger-Themen 6
W Suche nach strings zwischen eckigen Klammern mittels regulärer Ausdrücke Java Basics - Anfänger-Themen 3
S Strings und reguläre Ausdrücke Java Basics - Anfänger-Themen 2
N Reguläre Ausdrücke Java Basics - Anfänger-Themen 4
S Reguläre Ausdrücke Java Basics - Anfänger-Themen 2
M Reguläre ausdrücke? Java Basics - Anfänger-Themen 8
D Reguläre Ausdrücke: Anzahl Wiederholungen als Variable? Java Basics - Anfänger-Themen 3
A Reguläre Ausdrücke Java Basics - Anfänger-Themen 2
C arithmetische Ausdrücke Java Basics - Anfänger-Themen 7
M Reguläre Ausdrücke - maskieren von Zeichen? Java Basics - Anfänger-Themen 9
M regüläre Ausdrücke, die String - Variablen und Expression Java Basics - Anfänger-Themen 5
M Reguläre Ausdrücke und Ausgabe Java Basics - Anfänger-Themen 10
K Reguläre Ausdrücke - Gefundene Tokens direkt ermitteln Java Basics - Anfänger-Themen 3
J Reguläre Ausdrücke: Zeichenfolge ausschließen Java Basics - Anfänger-Themen 2
G Reguläre Ausdrücke Java Basics - Anfänger-Themen 13
L java und reguläre ausdrücke Java Basics - Anfänger-Themen 4
G Reguläre Ausdrücke zum Filtern von logfiles Java Basics - Anfänger-Themen 2
T Reguläre Ausdrücke? Java Basics - Anfänger-Themen 3
E Reguläre Ausdrücke Java Basics - Anfänger-Themen 17
O reguläre Ausdrücke bei java.util.regex.Pattern Java Basics - Anfänger-Themen 4
A Reguläre Ausdrücke der Pfade unter Windows und Unix Java Basics - Anfänger-Themen 3
M Ausdrücke -> Werte Java Basics - Anfänger-Themen 6
N Reguläre Ausdrücke Java Basics - Anfänger-Themen 5
G Problem reguläre Ausdrücke Java Basics - Anfänger-Themen 4
A Reguläre Ausdrücke: Inhalt zwischen zwei Schlüsselwörtern Java Basics - Anfänger-Themen 2
A Reguläre Ausdrücke: Problem mit Backslash Java Basics - Anfänger-Themen 3
A mehrere Ausdrücke in for schleife vergleichen Java Basics - Anfänger-Themen 6
I JFrame minimieren wenn anderes Programm minimiert wird Java Basics - Anfänger-Themen 1
L Matrix(Array) minimieren... Java Basics - Anfänger-Themen 9
K RAM - Verbrauch von "Hello World" minimieren. Java Basics - Anfänger-Themen 6
0 Nach Klick auf minimieren nur ins Tray Java Basics - Anfänger-Themen 3
M nach dem Minimieren is alles wech.... Java Basics - Anfänger-Themen 7
V Mehrere JFrames minimieren und wiederherstellen Java Basics - Anfänger-Themen 2
U Frame minimieren Java Basics - Anfänger-Themen 2
D Konsole ausblenden oder minimieren? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben