IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Implémentation interface Iterator,Iterable


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut Implémentation interface Iterator,Iterable
    Bonjour
    Dand un tp on nous a demander d'implementer les deux interface Iterable et Iterator pour permettre de parcourir les maillon,mais je sais pas comment les implementer.
    Avez vous une idee comment les implementer
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut
    En fait je veux redefinir les methodes de ces deux interfaces pour parcourir la liste chainee que j'ai creer.
    Je sais qu'il existe une classe deja prete pour les listes chainees mais c'est le professeur qui nous a demander de faire cela.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut
    Moi je veux un itérateur pour ma liste chainée faite maison et pas la classe LinkedList déjà définie dans le langage.

    En tous cas je donne mon essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @Override
    	public Iterator<T> iterator() {
    		liste=new  ListeAdtImpl<T>();
    	    Iterator<T> it=liste.iterator();
    		// TODO Auto-generated method stub
    		return it;
    	}
     
     
    	@Override
    	public boolean hasNext() {
    		Noeud<T> courrant=tete;
    		if(courrant.getSuivant()!=null){
    			return true;
    		}
    		// TODO Auto-generated method stub
    		// Noeud<T> courrant=tete
    		return false;
    	}
     
    	@Override
    	public T next() {
    		// TODO Auto-generated method stub
    		Noeud<T> courrant=tete;
    		if(hasNext()){
    			courrant=courrant.getSuivant();
    		}
    		return courrant.getElement();
    	}

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    le principe est d'implémenter Iterable<T> sur ta classe (apparement ListeAdtImpl<T>) donc de cette manière par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class ListeAdtImpl<T> implements Iterable<T> {
     
        public Iterator<T> iterator() {
             return new ListeAdtImplIterator();
        }
     
        private class ListeAdtImplIterator implements Iterator<T> {
     
              public boolean hasNext() {
                      // le code adéquate pour indiquer s'il reste des éléments
              }
     
              public T next() {
                      // le code adéquate pour retourner la prochaine valeur à lire (ou une exception NoSuchElementException s'il n'y en a pas
              }
     
              public void remove() {
                     // le code adéquate pour supprimer la dernière valeur obtenue par next(), ou une exception IllegalStateException siaucune valeur n'a été lue, ou si la dernière valeur lue a déjà été supprimée par l'appel de cette méthode
                    // ou eventuellement UnsupporterdOperationException si tu ne veux pas qu'un puisse supprimer          
             }
     
        }
     
    }
    Comme tu n'as pas mis le code complet de ta classe, je suis obligé d'imaginer le nom des variables que tu as utilisées pour montrer l'exemple d'un iterateur

    donc imaginons que ta liste chainée est fondée sur :

    - une classe interne Element<T> ayant pour variable de type T valeur pour la valeur et suivant pour l'élément suivant (de type Element<T>)
    - une variable premier de type Element<T> pour le premier element de la liste

    un truc dans le genre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    private class Element<T> {
         private T valeur;
         private Element<T> suivant;
         public Element() {
         }
         public Element(T valeur) {
            setValeur(valeur);
         }
         public void setValeur(T valeur) {
            this.valeur=valeur;
         }
         public T getValeur() {
            return valeur;
         }
         public void setSuivant(Element<T> suivant) {
            this.suivant=suivant;
         }
         public Element<T> getSuivant() {
            return suivant;
         }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public class ListeAdtImpl<T> implements Iterable<T> {
     
        private Element<T> premier;
     
        public ListAdtImpl(){
        }
     
        public void add(T valeur) {
            if ( premier==null ) premier=new Element<T>(valeur);
            else {
                Element<T> dernier=premier;
                while(dernier.getSuivant()!=null) {
                    dernier=dernier.getSuivant();
                }
                dernier.setSuivant(new Element<T>(valeur));
            }
        }
     
        public Iterator<T> iterator() {
             return new ListeAdtImplIterator();
        }
     
    private class ListeAdtImplIterator implements Iterator<T> {
     
              private Element<T> courant;
     
              public ListeAdtImplIterator() {
                  courant=premier;
              }
     
              public boolean hasNext() {
                    return courant!=null;
              }
     
              public T next() {
                    if ( courant==null ) throw new NoSuchElementException();
                    T valeur = courant.getValeur();
                    courant = courant.getSuivant();
                    return valeur;
              }
     
              public void remove() {
                    throw new UnsupportedOperationException();       
             }
     
        }
     
     
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut
    Merci c'est ca se que je cherche mais il faut que je redefinis aussi la methode Iterator de l'interfce Iterable cet methode a l'air plus difficile que next et hasNext.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par small44 Voir le message
    Merci c'est ca se que je cherche mais il faut que je redefinis aussi la methode Iterator de l'interfce Iterable cet methode a l'air plus difficile que next et hasNext.
    Mais , je l'ai mise la méthode iterator() de l'interface Iterable (et elle est pas plus difficile que celles de Iterator) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Iterator<T> iterator() {
             return new ListeAdtImplIterator();
        }
    C'est juste une méthode qui retourne une instance de classe implémentant l'interface Iterator.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Vérification implémentation interface a
    Par adissa357 dans le forum Général Java
    Réponses: 6
    Dernier message: 15/10/2013, 16h49
  2. [Débutant] implémentation d'Iterator
    Par nanath02 dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2007, 12h42
  3. Implémenter interface ICloneable
    Par babozfr dans le forum C++/CLI
    Réponses: 5
    Dernier message: 16/01/2007, 20h24
  4. [Débutant] Explication implémentation interface
    Par HaTnuX dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2007, 16h37
  5. [Collections] L'interface "Iterator" à quoi ça sert
    Par Samanta dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 07/04/2005, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo