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 :

Accéder aux éléments d'un HashSet


Sujet :

avec Java

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Accéder aux éléments d'un HashSet
    Salut!

    J'ai besoin de votre aide!

    Je veux faire une méthode de recherche dans un HashSet qui prend en paramètre un attribut "numinscrip" de type long. Les éléments du HashSet sont de type Etudiant.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public boolean recherche(long numinscrip){ 
     
    int i=0;
    boolean trouve;
     
    trouve=false;
    	while ((i<TA.size())&&(trouve==false))
    	{
    	  if( TA.get(i).getnuminscription()==numinscrip)
    		 trouve=true;
    	  else
    		  i++;
    	}
    	return trouve;
    }

    le get(i) ne marche pas avec le HashSet, comment faire?

    Merci!

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    "TA" est-il connu à cet endroit du code ? vérifie sa portée c'est peut-être le problème.
    Sinon : ça veut dire quoi "le get(i) ne marche pas avec le HashSet" ?
    (avec ses pieds ? ou bien tu as un message d'erreur plus explicite ? ^^)

    Dernier détail par rapport au forum : si tu ajoutes ="java" après le mot-clef CODE de ta balise CODE ouvrante, je crois que ça donne une coloration syntaxique adaptée à ce langage (ou alors j'ai fait ce beau rêve durant la nuit dernière, ce qui est possible aussi )

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    "TA" est-il connu à cet endroit du code ? vérifie sa portée c'est peut-être le problème.
    Sinon : ça veut dire quoi "le get(i) ne marche pas avec le HashSet" ?
    (avec ses pieds ? ou bien tu as un message d'erreur plus explicite ? ^^)

    Dernier détail par rapport au forum : si tu ajoutes ="java" après le mot-clef CODE de ta balise CODE ouvrante, je crois que ça donne une coloration syntaxique adaptée à ce langage (ou alors j'ai fait ce beau rêve durant la nuit dernière, ce qui est possible aussi )
    "TA" est défini comme suit dans la même classe:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Abonnes {
    private HashSet TA;
     
    public Abonnes(){
    	TA = new HashSet();
    }
     
    ...
     
    }

    Sinon, "get(i) ne marche pas avec HashSet" (c'est pas une histoire de pieds! rhalala lol :p) je m'explique! j'obtiens ce message-là : "The method get(int) is undefined for the type HashSet" (j'utilise eclipse)

    Voilà.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    C'est bien normal que tu obtiennes ce message, il n'y a pas de méthode get définit pour la classe HashSet...
    Si tu veux accéder aux éléments du hashSet, utilise la méthode iterator() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public boolean recherche(long numinscrip){ 
    boolean trouve = false;
    Iterator e = TA.iterator();
    while(e.hasNext() && !trouve) {
     if (((Etudiant)e.next()).getnuminscription() == numinscrip)
             trouve = true;
    }
    return trouve;
    }

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le hashset n'as pas d'ordre intrinsèque et donc, accéder au ième élément n'a pas de sens. Pour parcourir ton set, utilise l'iterator. En java 5:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HashSet<Etudiant> TA = ....;
     
     
    for (Etudiant e : TA)
      if (TA.getnuminscription() == numinscrip)
        return true;

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    for (Etudiant e : TA)
    if (TA.getnuminscription() == numinscrip)
    return true;
    C'est plus joli et ça s'executera plus rapidement que mon code

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par eatherquake Voir le message
    C'est bien normal que tu obtiennes ce message, il n'y a pas de méthode get définit pour la classe HashSet...
    Si tu veux accéder aux éléments du hashSet, utilise la méthode iterator() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public boolean recherche(long numinscrip){ 
    boolean trouve = false;
    Iterator e = TA.iterator();
    while(e.hasNext() && !trouve) {
     if (((Etudiant)e.next()).getnuminscription() == numinscrip)
             trouve = true;
    }
    return trouve;
    }
    C'est bon avec ce code-là
    Par contre, avec la soluce de tchize_, y a le message suivant "The method getnuminscription() is undefined for the type HashSet<Etudiant>"
    Je ne sais pas trop ce qui cloche dedans, peut-être que j'ai mal compris :/

    En tout cas, merci tout le monde ^^

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    désolé c'est e.get..... pas TA.get....

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par exaltomaniac Voir le message
    Par contre, avec la soluce de tchize_, y a le message suivant "The method getnuminscription() is undefined for the type HashSet<Etudiant>"
    Il faut sans doute lire "e.getnuminscription()" et non "TA.getnuminscription()"

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Yep! j'ai essayé et ça s'est exécuté sans problème maintenant. Merci ^^

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/08/2012, 12h22
  2. Réponses: 4
    Dernier message: 16/03/2007, 18h25
  3. Réponses: 3
    Dernier message: 11/04/2006, 11h41
  4. Réponses: 7
    Dernier message: 30/03/2006, 10h04
  5. [WebForms][2.0]Accéder aux élément DropDownlist via Javascript
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/10/2005, 15h01

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