Ich habe eine ArrayList, die mit Objekten gefüllt ist.
Meine Objektklasse namens Article
mit zwei Feldern;
Ich möchte meine Liste mit dem desArt
-Feld filtern, und für den Test habe ich den String "test" verwendet.
Ich habe die Guava von google benutzt, mit der ich eine ArrayList filtern kann.
das ist der Code, den ich ausprobiert habe:
%Vor%aber dieser Code funktioniert nicht.
Das ist normal: Predicates.containsPattern () funktioniert auf CharSequence
s, was Ihr gestionStock.Article
-Objekt nicht implementiert.
Sie müssen Ihr eigenes Prädikat schreiben:
%Vor%Verwenden Sie dann:
%Vor%Dies ist jedoch ziemlich viel Code für etwas, was mit weniger funktionaler Programmierung in viel weniger Code gemacht werden kann, wie von @mgnyp ... demonstriert.
Guava ist eine Bibliothek, die Ihnen erlaubt, einige funktionale Programmierung in Java zu verwenden. Eines der gewinnbringenden Dinge in der funktionalen Programmierung ist die Transformation der Sammlung wie
Sammlung - & gt; op - & gt; op - & gt; op - & gt; transformierte Sammlung.
Schau hier:
%Vor%Es ist schön, nicht wahr?
Das zweite gewinnende Ding ist Lambda-Funktionen. Schau hier:
%Vor%Tatsächlich hat Java noch keine reinen Lambda-Funktionen. Wir werden es in Java 8 tun können. Aber jetzt können wir dies in IDE Inellij Idea schreiben, und IDE wandelt solches Lambda in Prädikat um, das im Handumdrehen erzeugt wird:
%Vor%Wenn Ihre Filterbedingung regexp erfordert, wird der Code komplizierter und Sie müssen die Bedingung in eine separate Methode verschieben oder das gesamte Prädikat in eine separate Klasse verschieben.
Wenn all diese funktionale Programmierung zu kompliziert erscheint, erstellen Sie einfach eine neue Sammlung und füllen Sie sie manuell (ohne Guava):
%Vor%Bei Guava würde ich sagen, dass der einfachste Weg bei weitem Collections2.filter ist, wie zum Beispiel:
%Vor%