Gibt es ein Java 1.5-Äquivalent zu den PredicateT-Methoden in .Net?

8

Insbesondere suche ich nach einer ähnlich sauberen Schreibweise für Collection<T>.TrueForAll / Exists , etc.

Es fühlt sich übel an, eine foreach-Schleife schreiben zu müssen, um die Rückgabe einer Methode für jedes Objekt zu überprüfen, also hoffe ich, dass es eine bessere Java-Sprache dafür gibt.

    
Tetsujin no Oni 24.04.2009, 20:23
quelle

3 Antworten

11

Prädikate werden bereitgestellt in der Sammlung Google Sammlungen .

    
erickson 24.04.2009, 20:25
quelle
5

Functional Java bietet erstklassige Funktionen. Ein Prädikat wird als F<T, Boolean> ausgedrückt. Zum Beispiel ist hier ein Programm, das ein Array auf die Existenz einer Zeichenfolge, die alle Kleinbuchstaben ist, testet.

%Vor%     
Apocalisp 25.04.2009 03:17
quelle
3

Soweit ich weiß, nein. Aber Apache Commons-Sammlungen hat so etwas: Predicate

Bearbeiten : Richtig, wie in den Kommentaren erwähnt, stammt Commons Collections aus der Welt der Prä-Generika, also Google Sammlungen ( update : Guava ) scheint jetzt eine deutlich bessere Option zu sein. Dennoch, Commons Collections verdienen es, erwähnt zu werden, da es eine bekannte Bibliothek ist, die das tut, und auch, damit die Leute warum wissen, sie nicht zu benutzen. :)

Ich habe gerade mehr über Google Collections in diesem netten Interview mit seinen Hauptentwicklern gelesen und wollte es tun zitieren Sie ein Bit, das sich speziell mit dem Problem "Sammlungen von Google Collections und Apache Commons Collections" beschäftigt:

  

Was ist einzigartig an Ihrem Ansatz?   Wie unterscheidet es sich zum Beispiel   die Apache Commons Sammlung?

     

Kevin: "Nun, Gott sei Dank für den Apachen   Gemeingüter. Wir wären alle in schlechter Verfassung   ohne Bibliotheken wie diese. Das   sagte leider dieses spezielle Projekt   ist in einer Vor-Generika-Welt ins Stocken geraten.   Sie wollen Generika übernehmen, aber   sie erkennen an, dass dies beinhalten würde   eine ziemlich nichttriviale und inkompatible   umschreiben. Bis jetzt scheint niemand zu sein   aktiv eine solche Anstrengung zu fahren. Beim   Google haben wir Java 5 verwendet   unternehmensweit seit dem Frühjahr 2005.   Eine Sammlungsbibliothek ist   ungeneriert war ein Deal-Breaker für   uns, weil wir es wirklich hassen   Compilerwarnungen. Ich war auch   besorgt über die vielen Orte in   was die Apache-Sammlungen nicht tun   entsprechen den Spezifikationen der   JDK-Schnittstellen, die sie implementieren. "

     

[...]

     

Jared: "Wie Kevin meint, unsere Bibliothek   ist die einzige Bibliothek, die ich kenne   außerhalb des JDK, mit Java 5 erstellt   Eigenschaften: Generika, Enums, Kovariante   Rückgabetypen usw. Beim Schreiben von Java 5   Code, möchten Sie eine Sammlung Bibliothek   das nutzt die Vorteile der   Sprache. Darüber hinaus setzen wir enorm ein   Anstrengung in die Bibliothek zu machen   vollständig, robust und konsistent mit   die JDK-Auflistungsklassen. Unser   Sammlungsklassen waren viel mehr   Anfangs begrenzt, aber wir haben nach und nach   verbesserte sie in den letzten zwei Jahren.   Da die gesamte Bibliothek in Google verwendet wird   Source-Control-System, wir hatten die   Flexibilität, um die Öffentlichkeit zu verändern   Schnittstellen. Ein Open-Source-Projekt   wie Apache Commons Collection nicht   habe die Freiheit, es zu ändern   Verhalten nach der ersten Veröffentlichung.   Da werden wir diese Flexibilität einmal verlieren   Google Sammlungen Bibliothek 1.0 ist   veröffentlicht, sind wir begierig zu erhalten   Feedback jetzt, damit wir Dinge bekommen können   richtig. "

    
Jonik 24.04.2009 20:25
quelle

Tags und Links