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

Collection et Stream Java Discussion :

Probleme d'iterator - LinkedList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut Probleme d'iterator - LinkedList
    Bonjour,

    Je code pour le moment une stucture objet de maillage "dynamique".

    Ainsi voila les les elements de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class vertex {
     
    	private Point3f X;	//coordonnées
    	private int id;		//identifiant/numéro
    	private LinkedList<edge> edges;	//liste de references vers les arretes
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class edge {
     
    	private int id;	//identifiant/numero
    	private vertex[] vertices;	//tableau de 2 vertex
    	private face[] faces;		//tableau de 2 faces
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class face {
     
    	private int id;
    	private edge[] edges;
    }
    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
     
    public class maillage {
     
     
    	/** Boite englobante */
    	private float Xmin;
    	private float Xmax;
    	private float Ymin;
    	private float Ymax;
    	private float Zmin;
    	private float Zmax;
     
    	/** elements composant le maillage */
    	private LinkedList<face> faces;
    	private LinkedList<edge> edges;
    	private LinkedList<vertex> vertices;
    ...
    }
    Voila en gros.

    Pour tester mes méthodes, j'ai fait un main() :
    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
     
    public static void main(String[] args) {
     
    		System.out.println("Program started");
     
    		maillage m = new maillage();
     
    		m.build(); //consturction du maillage de test
     
    		ListIterator it = m.getVertices().listIterator();
    		vertex test = new vertex((float)0.0, (float)0.0, (float)0.0);
     
    		while(it.hasNext())
    		{
     
    			vertex tt = (vertex)it;
    			float[] data = tt.getCoord();
    			System.out.println("Test X:"+data[0]+" "+data[1]+" "+data[2]+"");
     
    			if(it.equals(test))
    			{
    				System.out.println("	Trouvé");
    			}
    			it.next();
    			System.out.println("	next");
    		}
     
    		System.out.println("Program terminated");
    	}
    Seulement voila, je ne connais rien aux itérateurs, et donc le probleme vien du fait que je en sais pas comment récuperer la reference de mon objet dans ma liste, car l'itérateur la parcours mais n'a pas de méthode pour récuperer le contenu de l'element courant...

    Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Program started
    Exception in thread "main" java.lang.ClassCastException: java.util.LinkedList$ListItr
    	at maillage_main.main(maillage_main.java:20)
     
    (la ligne 20 étant "vertex tt = (vertex)it;" )
    j'ai regardé la FAQ mais je n'ai rien trouvé de concluant...

    Merci de m'aider....

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Et "it.next();" te renvoie quoi, à ton avis?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(it.hasNext()) {
       vertex tt = (vertex) it.next();
       // etc.
    }
    Bien évidemment un seul "it.next();" est autorisé par boucle (en général au début pour récupérer l'objet courant)
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Sinon, je n'avais pas remarqué mais tu ne respectes pas les conventions de nommage des variables en java (qui est d'ailleurs la même dans la plupart des langages objets)

    Un nom de classe commence par une majuscule:
    vertex tt = ... doit devenir Vertex tt = ...

    Inversement, les noms de variables commencent par des minuscules
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Donc si je comprend bien, le it.next(), non seulement retourne l'objet courant, mais en plus passe au suivant c'est bien ça ?

    Et pour les conventions de nommage, j'ai été un peu laxiste, mais rien n'est encore perdu

    merci

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Ange_blond
    Donc si je comprend bien, le it.next(), non seulement retourne l'objet courant, mais en plus passe au suivant c'est bien ça ?
    Oui... ou plutôt l'inverse: il renvoie le prochain élément de l'itérateur. C'est pour cela que cette méthode ne peut être invoquée QUE si l'itérateur a un prochain élément (donc si hasNext() renvoie true).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    List test = new LinkedList();
    test.add("a");
    test.add("b");
    test.add("c");
     
    Iterator i = test.iterator();
    while(i.hasNext()) {
       System.out.println(i.next().toString());
    }
     
    // Dans la console, on voit naturellement s'afficher "a", "b", et "c"
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Whaaaou merci à toi

    je regarde ça dans 10 minutes à la fin de mon épisode de Friends

    encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme map iterator
    Par Veovis dans le forum SL & STL
    Réponses: 2
    Dernier message: 02/06/2008, 22h08
  2. Probleme interface iterator dans une ArrayList
    Par inzagi dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/02/2008, 19h05
  3. probleme avec une linkedlist
    Par christianf dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 24/09/2007, 17h42
  4. probleme avec LinkedList
    Par habouch dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2006, 10h12
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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