2009-01-20 8 views
1

J'ai un "Set" sur lequel je dois utiliser la fermeture findAll. L'ensemble contient des objets, pas seulement des valeurs primitives. Par exemple ... J'ai un ensemble d'objets employés et j'ai besoin d'itérer et de saisir des éléments de cet ensemble d'objets Empolyee par les attributs de l'employé.Utilisation de findAll Collection Closure dans Groovy

Pour une raison quelconque, la fermeture de findAll semble simplement ignorer ma fermeture et renvoie un ensemble vide.

Voici ma syntaxe;

dstCollection = srcCollection.findAll{ 
    it.age == 22 
} 

Toute aide serait la bienvenue.

Merci.

Répondre

3

Les œuvres suivantes pour moi:

class Employee { 
    int age 

    String toString() { 
     age 
    } 
} 

def list = [ new Employee(age:22), new Employee(age:23), new Employee(age:22) ] as Set 

println list 
println list.findAll { it.age == 22 } 

sortie:

[22, 23, 22] 
[22, 22] 

Pouvez-vous envoyer votre code? Edit: ajouté "as Set", puisque j'ai remarqué que la question concerne les ensembles et non les listes. Cela fonctionne aussi pour moi.

+0

Il vous manque un "{" sur la définition toString ;-) –