2009-04-24 11 views

risposta

3

Per quanto ne so, no. Ma Apache Commons Collections ha qualcosa di simile: Predicate


Edit: Destra, come notato nei commenti, Commons Collections è da pre-generici mondo, in modo da Google Collections (aggiornamento: Guava) sembra un opzione chiaramente migliore ora. Tuttavia, le raccolte di Commons meritano di essere menzionate in quanto è una libreria ben nota che fa questo, e anche perché la gente sappia perché non lo usa. :)

Stavo leggendo informazioni su Google Collezioni in questa nice interview con i suoi principali sviluppatori, e ha voluto citare un po 'che si occupa specificamente con i "Google Collezioni vs. Apache Commons Collezioni" questione:

Qual è la particolarità del tuo approccio? In che modo differisce, ad esempio, dalla collezione Apache Commons?

Kevin: ". Bene, grazie a Dio per l'Apache Commons saremmo tutti in cattive condizioni senza librerie come questo che Detto questo, purtroppo quel particolare progetto è in fase di stallo, in un mondo pre-generici. . essi vogliono adottare farmaci generici, ma riconoscono che ciò comporterebbe una bella banale e incompatibile riscrittura. Finora, nessuno sembra essere guidare attivamente un tale sforzo. a Google abbiamo usato Java 5 a livello aziendale dalla primavera del 2005. Una biblioteca di raccolte è ungenerified era un deal-breaker per us, perché odiamo davvero ricevere gli avvertimenti del compilatore . Ero anche preoccupato per i molti luoghi in quale le collezioni Apache non conformi alle specifiche delle interfacce JDK che implementano "

[...]

Jared:". Come Kevin implica, la nostra biblioteca è la libreria solo collezioni so di, al di fuori del JDK, costruita con Java 5 caratteristiche: farmaci generici, enums, covarianti tipi di ritorno, ecc Quando la scrittura di Java 5 codice, si desidera una collezione biblioteca che sfrutta al massimo lo lingua. Inoltre, abbiamo dedicato un enorme sforzo a per rendere la libreria completa, solida e coerente con le classi di raccolta JDK.Le nostre classi di raccolta erano inizialmente molto più limitate a , ma abbiamo progressivamente incrementato il numero di negli ultimi due anni. Poiché l'utilizzo di tutte le librerie è nel sistema di controllo del codice sorgente di Google, abbiamo avuto la flessibilità per la modifica delle interfacce pubbliche . Un progetto open source come Apache Commons Collection non ha la libertà di modificare il suo comportamento dopo la versione iniziale. Dal momento che perderemo che la flessibilità, una volta Google Collections Library 1.0 è rilasciato, siamo ansiosi di ricevere un feedback ora in modo che possiamo ottenere le cose giusta ".

+4

Collezione Commons s manca del supporto generico. – erickson

5

Functional Java fornisce funzioni di prima classe. A predicato è espresso come F<T, Boolean> Ad esempio, ecco un programma che mette alla prova una matrice per l'esistenza di una stringa che è tutte le lettere minuscole

import fj.F; 
import fj.data.Array; 
import static fj.data.Array.array; 
import static fj.function.Strings.matches; 

public final class List_exists { 
    public static void main(final String[] args) { 
    final Array<String> a = array("Hello", "There", "how", "ARE", "yOU?"); 
    final boolean b = a.exists(matches.f("^[a-z]*$")); 
    System.out.println(b); // true 
    } 
} 
Problemi correlati