Au secours : iterator - collection - set - treeset - sortedset !!!
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 2011
-
23 avril 2004 à 10:44
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 2011
-
23 avril 2004 à 11:54
Bonjour à tous,
voilà, depuis ce matin je me prend la tête avec le problème suivant :
Collection collection = new TreeSet();
SortedSet resultSet = (SortedSet)collection;
QueryHandler handler = new QueryHandler(channel,queryString); //pas important pour mon pb
collection.addAll(handler.getResultSet());
Set dataSet = (Set)collection;
//Set dataSet = handler.getResultSet(); //idem qu'au dessus
resultset = channel.query(dataSet,selector,comparator);
Ce bout de code me permet de récupérer un SortedSet dans resultSet. (Déjà ici, je ne comprend pas car SortedSet est une interface ... si qqun pouvait m'éclairer).
C'est un bout de code qu'un prestataire a développé et moi je dois faire à peu près la meme chose mais j'ai besoin d'un tri assez compliqué.
Ce que je ne comprend pas c'est comment faire une boucle sur ce SortedSet (ou alors sur collection qui est le TreeSet avec les memes infos) ??? pour récupérer les infos des objets le composant.
J'ai voulu faire un collection.iterator() car iterator contient les méthodes boolean hasNext() et Object next(), mais comme c'est une interface, je ne peux pas l'intancier ...
Ca ne marche pas ça :sad) :
Iterator it = new Iterator(resultSet.iterator());
while (it.hasNext()){
FicheReporting ficheRep = (FicheReporting)it.next();
ficheRep.getTitle();
Quelqu'un aurait-il une idée ??
(Je sais que c'est une question bien spécifique, alors merci d'avance à qui prendra le temps d'y réfléchir et de m'aider)
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 23 avril 2004 à 11:03
Salut,
d'abord pour ton itérator.
il faut faire :
Iterator it = resultSet.iterator();
while (it.hasNext()){
FicheReporting ficheRep = (FicheReporting)it.next();
ficheRep.getTitle();
La méthode iterator() te donne un iterator déjà instancié.
Ensuite pour l'utilisation des interfaces. Elles servent à définir un comportement sans se préoccuper de la façon dont c'est implémenté. Bien qu'on manipule des interfaces et qu'on pourrait penser que ce n'est pas instanciable, il ne faut pas oublier qu'on manipule en réalité des implémentations de ces interfaces. Le type réel est masqué car on n'a pas besoin de savoir comment c'est fait à l'intérieur mais juste on a besoin de l'utiliser.
Il faut bien comprendre ce principe car le framework collection se base dessus. On utilise que les interfaces et pas les classes concrètes (seulement à l'instanciation dans la plupart des cas). On retrouve le même principe dans JDBC : l'implémentation des interfaces est donnée par le driver de la BD
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 201120 23 avril 2004 à 11:54
Ah ... Un grand merci à toi :)
Je suis heureuse et soulagée d'avoir enfin une solution à ce problème (sur lequel je suis depuis hier matin).
Il faut dire que j'ai toujours eu un problème avec la notion d'interface et de classe abstraite.
Mon prof nous a dit : ce n'est pas instanciable, donc c'est pour ça que je ne comprenais pas trop pourquoi la méthode renvoyait un Iterator ...
MERCI MERCI MERCI MERCI A TOI ...
Bon, maintenant je vais m'atteler à faire mes boucles imbriquées pour l'affichage du tri de ces documents ...
C'est pas gagné !!