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 :

Hashtable - Dictionary


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Hashtable - Dictionary
    Bonjour

    je dois construire un arbre hiérarchique
    du genre:

    --Pierre Jean Charles Igor Pierre Etienne--
    la racine c'est "Pierre"
    il a deux fils "Jean" et "Charles"
    Jean a deux fils "Igor" et " Pierre"
    Charles à un fils "Etienne"

    j'ai lu ICI que HashTable Dictionary Properties peut constituer un arbre hiérarchique de propriétés.

    Est-ce plus facile d'utiliser une HashMap?

    Si oui comment dois-je m'y prendre pour l'implementer? (j'ai regardé la FAQ mais pas vraiment trouvé d'exemple qui m'aide)

    Dois-je m'y prendre autrement? je pensais a une classe Arbre et une autre classe Noeud...

    merci

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Hello,

    Hashtable c'est pareil que HashMap à part que Hashtable est synchronisé et c'est une vieille classe qu'il est préférable de ne plus employer pour des questions de souplesse et de compréhension.

    Par contre il faut que tu avances un minimum par toi-même, construire un arbre, il y a déjà plusieurs réponses dans ce forum sur le sujet.

    ++
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Il y a quand même une différence fondamentale entre HashMap et HashTable, la seconde structure de données ne permet pas d'ajouter des clés et des valeurs nulles sous peine de lever l'exception 'NullPointerException'.
    Après, si elle est vieille ? elle n'est pas 'depreciated'.
    Pour les synchronisations, je n'en suis pas sûr... ce n'est pas marqué dans la javadoc. Sinon, cette limite est pour l'iterateur :
    Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification.
    Pour les accès concurrents on a le package 'java.util.concurrent' et toute une série de classe bien marrante pour ça dont : 'ConcurrentHashMap'.

    Pour répondre à la question, oui la HashMap est simple d'utilisation :
    tu crées ta variable :
    HashMap<String, String> hashmap = new HashMap<String, String>();
    Ajout :
    hashmap.put("cle","valeur");
    // un ajout sur une clé déja existance écrase l'ancienne valeur
    Etc etc...
    Les opérations sont les mêmes puisque les deux classes implementent l'interface Map<K,V>, la différence vient de l'ajout de valeur nulle évoquée plus haut.
    Après, pour être sincère ces structures sont éminement puissantes, mais il me semble qu'elles ne correspondent pas à tes besoins. J'aurai plutôt utilisé une 'TreeMap ' basée sur un arbre rouge-noir et qui permet un accès aux noeuds de l'arbre par clés.
    La question à se poser, c'est combien de fils un noeud peut-il avoir ?

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Tu n'as pas tout lu :

    Citation Envoyé par javadoc
    Unlike the new collection implementations, {@code Hashtable} is synchronized.
    Non ce n'est pas déprécié car la classe a été migrée pour implémenter java.util.Map. Cependant, l'utiliser sans savoir que c'est synchronisé peut provoquer des lenteurs inutiles dans vos programmes. Voilà pourquoi il faut privilégier les autres implémentations non synchronisée (même problème avec Vector). Les débutants se tournent plus facilement vers Vector et Hashtable alors que justement, ce qui est synchronisé devrait être utilisés plutôt quand on en a vraiment besoin.

    Voilà pourquoi sur ce forum nous déconseillons fortement de l'utiliser.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Ok très intéressant, ça m'apprendra à ne pas lire correctement

Discussions similaires

  1. [VB.NET] HashTable
    Par mardoch dans le forum ASP.NET
    Réponses: 8
    Dernier message: 23/06/2009, 12h58
  2. [HashMap] Modification d'objet d'une Hashtable
    Par viena dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 29/07/2004, 09h04
  3. [JSP][STRUTS]Cle d'une hashtable
    Par julienOriano dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/06/2004, 13h47
  4. Hashtable
    Par Gogoye dans le forum C
    Réponses: 5
    Dernier message: 23/09/2003, 16h59

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