dfini wrote:
Désolé je n'ai pas été suffisamment explicit.
...
As-tu un truc.
C'est donc une question de Java :-).
Je n'ai malheureusement pas de truc. Il faut à mon avis d'une façon ou d'une autre itérer sur les collections (récursivement) et collecter les résultats que tu veux. Une "astuce" est peut-être d'utiliser la methode toArray(Object[] a) pour ne pas avoir à faire des
cast à tout bout de champs, mais cela n'aide pas beaucoup...
Exemple de code (class1 est un objet de type Class1):
Code:
Set class3Set = new HashSet();
for (Class2 class2 : (Class2[]) class1.getCollection1().toArray(new Class2[0])) {
class3Set.addAll(class2.getCollection2());
}
Set class4Set = new HashSet();
for (Object class3Elements : class3Set) {
class4Set.addAll(((Class3) class3Elements).getCollection3());
}
Set nameSet = new HashSet();
for (Class4 class4Element : (Class4[]) class4Set.toArray(new Class4[0])) {
for (Class5 class5Element : (Class5[]) class4Element.getCollection4().toArray(new Class5[0])) {
nameSet.add(class5Element.getNom());
}
}
J'ai volontairement mélangé les styles pour montrer ce qui se passe selon qu'on utilise ou non toArray. Si tu n'utilises pas Java 1.5, il faudra écrire une peu plus dans les conditions de boucle.
À la fin nameSet contient tous les noms différents des élements de Class5.
Ce n'est pas très compliqué mais c'est plutôt moche :-(.
Mais je pense que tu avais déjà trouvé cette possibilité et que tu espérais mieux. Tu devrais peut-être aussi essayer sur un forum Java.
Erik