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 :

Fonctionnement interne d'une HashMap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut Fonctionnement interne d'une HashMap
    Bonjour,

    J'aurai une petite question sur le fonctionnement interne d'une HashMap, mon problème est le suivant:

    J'ai une HashMap de <String, MyObject>, et le truc c'est que j'ai pas mal d'entrées dedans. Du coup, je me posais une question par rapport à la méthode Object get(Key). Etant donné que je vais avoir a faire cette méthode un grand nombre de fois sur un grand nombre de données, je me demandais si elle fonctionne en séquenciel ou en multi-thread?

    Mon point est le suivant, est ce que cette méthode parcourt chaque entrée une par une de ma HashMap ou il le divise en plusieurs threads qui chacun traite une partie de la HashMap?

    Merci de vos éclaircissement!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Euh... Une HashMap utilise une... Table de hachage ? C'est pour ça que ça s'appelle comme ça, en fait : hash - map. Une map à base de hash.

    Ta Map ne sera pas parcourue entièrement, l'entrée de hachage qui contient le hachage de la clé, sera parcourue. Et ce sera fait sur le thread qui appelle get(), sans créer d'autre thread.
    Ce n'est pas forcément la meilleure façon de faire, mais dans le cas général si : il vaut mieux avoir une plus grande répartition des hachages, que plus de thread pour vérifier une entrée de hachage surchargée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par Thelo Voir le message
    Mon point est le suivant, est ce que cette méthode parcourt chaque entrée une par une de ma HashMap ou il le divise en plusieurs threads qui chacun traite une partie de la HashMap?
    C'est monothread, et pour compléter ce que dit Thelvin, le temps d'accès est en o(1), ce qui veut dire qu'il est constant par rapport à la taille de ta Map, si ton hachage est bien fait, c'est à dire qu'il distribue uniformément les éléments. En l'occurrence ici tu utilises des String, donc pas besoin de redéfinir hash() ; la question qui pourrait se poser aurait trait à ces Strings, mais sauf cas pathologique je pense que ça doit aller

Discussions similaires

  1. [Struts] [HashMap] passage d'un bean dans une HashMap
    Par cosmos38240 dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/09/2005, 16h05
  2. Fonctionnement simplifié d'une transaction Oracle
    Par jack554 dans le forum Oracle
    Réponses: 7
    Dernier message: 21/04/2005, 10h25
  3. [STRUTS] Itérer sur une HashMap
    Par s.grenet dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/04/2005, 13h26
  4. [débutant] cherche a copier une HashMap
    Par mathieublanc13 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/05/2004, 14h33

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