Filtern mithilfe von logischen Ausdrücken

Dawa

Neues Mitglied
Hallo miteinander,

ich habe ein Problem, wo ich echt wenig Infos im Netz finden konnte. Ich hoffe ihr könnt mir weiterhelfen.
Ich habe ein JTable erstellt, dieses würde ich gerne filtern mithilfe von logischen Ausdrücken. D.h.

Filter: NOT Marie and NOT Tom --> Tabelle filtert Marie und Tom raus

Wenn ihr mir helfen könntet , außerdem müsste ich dabei auch Operatoren wie mit Klammern oder größer gleich kleiner gleich dabei haben.

Ich habe versucht mit JEval zu arbeiten, aber daraus wurde ich auch nicht schlauer:rtfm::noe:. Ich bin echt verzweifelt und hoffe, dass Ihr mir helfen könnt.

Liebe Grüße
 
Zuletzt bearbeitet:
Hallo,
das was du da vor hast ist nicht wirklich einfach umzusetzen.
Was mir dabei einfällt ist um das Problem zu lösen ist das du einen Ausdruck "NOT Marie and NOT Tom" irgendwie in einen Predicate umwandelst und danach eine List von den Strings nimmst und dann .filter () aufrufst und den Predicate übergibt. Du müsstest sozusagen einen Converter schreiben der Rekursiv arbeitet um den String zu Convertieren.

Jedoch ist es nicht einfach das ganze zu einem Predicate umzuwandeln.
Ob JEval der richtige Ansatz ist kann ich dir nicht Sagen. Du musst halt bei JEval im Hinterkopf behalten das er ALLES umwandelt (auch Java code) - So entsteht in deinem Programm eine Sicherheitslücke !
Die andere Frage ist ob dir JEval überhaupt helfen kann. Ich schätze das es evtl mit JEval ungefähr so funktionieren könnte:
Java:
Evaluator mEvaluator = new Evaluator(); //Evaluator erstellen
		
		List<String> personen = // Alle deine Personen
                //Die Bedingung die erfüllt sein muss!
		String bedingung = "!%0$s==Marie&&!%0$s==Tom"; 
		for(String person : personen){
                        // Die Person einfügen und evaluieren 
			String richtig = mEvaluator.evaluate(String.format(bedingung, person));
		       //Zu Boolean Casten
			//Prüfen und dann neuer lister hinzufügen wenn True
			
	    }
Gruß,
AntiMuffin
 
Schau dir mal die Videos von Johannes Wenisch an, die sind sehr lehrreich und haben mir beim aktuellen Projekt (mein 1. Java 8 Projekt) direkt geholfen. Ich nutze Streams mit Predicates in allen Listen, in denen ich filtere oder z.B. einen Duplicate-Check mache.

https://www.youtube.com/watch?v=XjWejqfMCh4

Vielleicht bekommt du damit auch dein Problem gelöst 🙂
 

Zurück
Oben