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

Langage Java Discussion :

Problème d'acces aux données d'une liste Chainée


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème d'acces aux données d'une liste Chainée
    Bonjour chers collaborateurs.
    J'ai un probleme avec des liste chainée en Java, alors je cree une LinkedList dans laquelle je n'ajoute que des objets qui sont des classes ayant exclusivement deux champs, tous publiques.
    Le problème c'est que je ne parviens pas à récupérer les valeurs de ces champs pour une utilisation future, lorsque je parcours la liste. Quelles fonctions me sugérez vous? Merci.
    J'ai un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Bloc
    { public int Val1;
       public int Val2;
       public void Bloc(int a,int b)
      { Val1 = a;
         Val2 = b;
      }
    }
     
    LinkedList liste = new LinkedList();
    Bloc b1 = new Bloc(5,8);liste.add(b1);
    Bloc b2 = new Bloc(15,3);liste.add(b2);
    Bloc b3 = new Bloc(9,23);liste.add(b3);
    Bloc b4 = new Bloc(6,7);liste.add(b4);
    je voudrais donc savoir comment acceder aux entiers 5,8,15,...... en parcourant progressivement la liste. Merci

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bonjour,

    Il te suffit de parcourir ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (Bloc b: liste) {
      System.out.println("1e valeur: " + b.Val1);
      System.out.println("2e valeur: " + b.Val2);
    }
    ps: Il est préférable de rendre les variables d'une classe privées, et d'en fournir les accesseurs (méthodes getXxx et setXxx).
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    Tu dois caster l'objet que tu récupère en Bloc car par défaut c'est un Object et donc il ne connait pas test variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i = 0; i < liste.size(); i++){
    System.out.println(((Bloc)liste.get(i)).Val1);
    System.out.println(((Bloc)liste.get(i)).Val2);
    }

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Tout à fait.
    Ou alors, il faut typer ta liste chaînée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LinkedList<Bloc> liste = new LinkedList<Bloc>();
    Cela te permet d'éviter d'une part tous les casts lorsque tu accèdes au contenu de la liste, mais aussi de sécuriser les ajouts dans la liste (une exception est levée si tu ajoutes un élément qui n'est pas une instance de Bloc).

    A noter que cela ne fonctionne qu'avec Java 5 (alors que le code de Billy14 marche avec les versions plus anciennes de Java).
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Billy14 Voir le message
    [CODE]for (int i = 0; i < liste.size(); i++){
    Le parcours par index n'est pas à conseiller sur une LinkedList ! Cela peut s'avérer vraiment très mauvais en terme de performance : il faut utiliser l'Iterator !


    A noter que la solution de romaintaz implique Java 5.0 et les Generics... [edit] grillé

    a++

Discussions similaires

  1. Problème d'accès aux méthodes d'une classe
    Par RR instinct dans le forum Langage
    Réponses: 5
    Dernier message: 26/06/2006, 14h51
  2. [SQL][C#] Pas d'accès aux données d'une base SQL
    Par ridd21 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/06/2006, 10h46
  3. [VBA-A]Acces aux données d'une requête Access
    Par Yanmeunier dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/02/2006, 12h21
  4. problème d'accès aux données sur serveur par poste client
    Par rahan_dave dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2006, 09h13
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

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