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 :

Probleme de parcours d'une hashtable


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 354
    Par défaut Probleme de parcours d'une hashtable
    Bonjour,

    Voila j'ai un probleme :

    je dois parcourir une Hashtable et passer en parametre son contenu à une fonction. Mais le souci est que j'obtiens un classCastException.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    animauxSelection = accesDonnees
    					.chercherEtrangerParIdentifiant(critere);
    			animauxSelection = accesDonnees
    					.chercherEtrangerDomaineGenetiqueParIdentifiant(critere);
    			Iterator it = animauxSelection.keySet().iterator();
    			while (it.hasNext()) {
    				AnimalSelection animalsel = (AnimalSelection) animauxSelection.get(it.next());
    				Animal animal = accesDonnees
    						.completerEtrangerDomaineGenetique(animalsel);
    				collectionanimauxSelection.add(animal);
    			}
    Est ce que quelqu'un peut m'aider ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut
    comment est alimentée cette hastable?

  3. #3
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Ton souci vient sûrement de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnimalSelection animalsel = (AnimalSelection) animauxSelection.get(it.next());
    Dans ta Hashtable animauxSelection il y a au moins un objet (si ce n'est pas tous) qui n'est pas de type AnimalSelection.

    Si tu programme aec Java 5.0, tu peux utiliser les generics pour simplifier ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Hashtable<String, AnimalSelection> animauxSelection ;
    ...
    AnimalSelection animalsel = animauxSelection.get(it.next());
    ...
    Plus besoin de cast, puisque le compilo sait exactement ce que contient ta hashtable

    ++

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Rien à voir avec ton problème, mais utilise HashMap et non Hashtable...

    Hashtable, Vector et autres Stack sont à bannir

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 354
    Par défaut
    Citation Envoyé par ®om
    Rien à voir avec ton problème, mais utilise HashMap et non Hashtable...

    Hashtable, Vector et autres Stack sont à bannir
    Pourquoi ?

    Et je suis oblige de le faire comme ça, le chef veut absolument une hastable

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par lilli1407
    Pourquoi ?

    Et je suis oblige de le faire comme ça, le chef veut absolument une hastable
    Bah, HashMap c exactement pareil, mais en mieux (Hashtable est déconseillé par Sun depuis java 1.2 - ils ont pas sorti de nouvelles Collections pour rien)...

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ®om
    Bah, HashMap c exactement pareil, mais en mieux (Hashtable est déconseillé par Sun depuis java 1.2 - ils ont pas sorti de nouvelles Collections pour rien)...
    Deux remarques : HashMap et Hashtable ne sont pas exactement pareil, et Hashtable n'est pas déconseillé (dans le sens où elle n'est pas deprecated).


    Hashtable, tout comme Vector,sont des classes qui datent de l'origine de Java. A l'époque il n'existait aucune API de Collections mais seulement ces classes.

    L'API de collection n'est apparaut que dans la 3ième version de Java, c-a-d Java 1.2. Ainsi, il est conseillé de priviliéger (respectivement) l'utilisation de HashMap, ArrayList.

    Pourquoi : seulement parce que l'API a été normalisée et simplifiée en évitant des noms de méthodes trop long, et en utilisant massivement des interfaces...

    Les classes initiales (dont Hashtable) ont été adapté afin de respecter la nouvelle API de Collections, mais du coup elles possèdent beaucoup de méthode "en double"...


    Enfin si l'implémentation de ces nouvelles classes est très proche voir identique, il faut savoir que désormais les collections ne sont plus thread-safe (sauf mention contraire). Ainsi les HashMap, ArrayList, etc. ne peuvent pas être utilisé directement depuis différents threads, contrairement à leurs ainées qui elles sont thread-safe (mais donc un peu moins performante).

    Toutefois, même pour le coté thread-safe, il est préférable de passer par les méthodes Collections.synchronizedList(), Collections.synchronizedMap(), qui permettent d'obtenir une version synchonisé de n'importe quel implémentation...


    Mais pourquoi alors Vector et Hashtable ne sont pas déprécié ???
    tout simplement parce qu'elles sont encore beaucoup utilisé, que ce soit par l'API standard ou des APIs tierces...





    Sinon pour en revenir au problème initial :
    lilli1407 >> Si tu lisais le stacktrace de l'exception tu aurait sans doute la réponse à ton problème...

    a++

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/04/2015, 13h22
  2. Parcours d'une collection Hashtable en VBA
    Par zardoz45 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/04/2012, 16h04
  3. Probleme de parcour d'enregistrement d'une table
    Par rob1son76 dans le forum Access
    Réponses: 5
    Dernier message: 21/01/2010, 14h46
  4. Probleme de tri d'une Hashtable
    Par Dazdh dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/03/2009, 16h59
  5. Probleme pour initialiser une HashTable
    Par L4BiN dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 07/05/2008, 10h58

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