2009-04-24 7 views

Répondre

3

Pour autant que je sache, non. Mais Apache Commons Collections a quelque chose comme ceci: Predicate


Modifier: droit, comme il est indiqué dans les commentaires, la Chambre des communes Collections est du monde pré-génériques, donc Google Collections (mise à jour: Guava) semble comme un clairement meilleure option maintenant. Pourtant, Commons Collections mérite d'être mentionné car c'est une bibliothèque bien connue qui fait cela, et aussi pour que les gens sachent pourquoi ne pas l'utiliser. :)

Je viens de lire plus sur Google Collections dans ce nice interview avec ses principaux développeurs, et je voulais citer un qui traite spécifiquement de la question des « Collections Google vs Apache Commons Collections »:

Qu'est-ce qui caractérise votre approche? En quoi diffère-t-il, par exemple, de la collection Apache Commons?

Kevin. « Eh bien, Dieu merci pour les Apache Commons Nous serions tous en mauvais état sans bibliothèques comme cela que dit, malheureusement, ce projet particulier est au point mort, dans un monde pré-génériques. . ils ne veulent adopter les médicaments génériques, mais ils reconnaissent que cela impliquerait une rewrite assez triviale et incompatible. jusqu'à présent, personne ne semble être conduite activement un tel effort. à Google, nous avons utilisé Java 5 à l'échelle de l'entreprise depuis le printemps 2005. Une bibliothèque de collections étant ungenerified était un deal-breaker pour nous, parce que nous détestons vraiment obtenir avertissements du compilateur. J'étais aussi préoccupé par les nombreux endroits dans que les collections Apache ne sont conformes aux spécifications des interfaces JDK qu'ils mettent en œuvre "

[...]

Jared:". Comme Kevin implique, notre bibliothèque est la seule bibliothèque de collections que je sais de, en dehors du JDK, construit avec Java 5 caractéristiques: génériques, énumérations, covariants types de retour, etc. Lorsque vous rédigez Java 5 code , vous voulez une collection bibliothèque qui profite pleinement du langue. En outre, nous avons mis un effort énorme en rendant la bibliothèque complète, robuste et cohérente avec les classes de collection JDK.Nos classes de collecte étaient beaucoup plus limitées initialement, mais nous les avons progressivement améliorées au cours des deux dernières années. Puisque toute l'utilisation de la bibliothèque est dans le système de contrôle de source de Google, nous avons eu la flexibilité pour modifier les interfaces publiques . Un projet open source comme Apache Commons Collection n'a pas la possibilité de modifier son comportement après la publication initiale. Puisque nous allons perdre cette flexibilité une fois Collections Google Library 1.0 est publié , nous sommes impatients de recevoir commentaires maintenant afin que nous puissions faire avancer les choses droite. »

+4

Commons Collection s manque de support générique. – erickson

5

Functional Java fournit des fonctions de première classe. A prédicat est exprimé en F<T, Boolean> par exemple, voici un programme qui teste un tableau pour l'existence d'une chaîne qui est toutes les lettres minuscules

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 
    } 
} 
Questions connexes