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 :

[Pratiques] Utilisation de HashMap dans une application


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut [Pratiques] Utilisation de HashMap dans une application
    Salut,

    Quels est l'utilisation courante d'un HashMap dans une application ?

    Est-ce qu'on peut l'utiliser comme le conteneur principal (ce qui consomme beaucoup de place mémoire) ou fais t-on des tours de passe-passe avec d'autres conteneurs comme les ArrayList ou Vector ? Ou encore, est-ce qu'on charge les informations directement à partir d'un fichier ou une BDD ?

    Je pose la question parceque l'accès à une HashMap se limite à une clé, ce qui réduit son intérêt au niveau de la recherche d'informations. Personellement, il me semble que cela rends son utilité passagère dans le sens où l'on peut créer une HashMap, la charger et ensuite accélérer la recherche d'informations de manière significative (temps d'accès fixe selon certaines sources).

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on utilise une hashmap dès qu'on doit stocker des informations auxquelles ont doit accéder par clé, ce qui est son but premier. Exemples:

    configuration du programme, sous forme de clé/valeur
    stockage de paramètres soumis dans une requête web
    .....

    Les Map (et hashmap en particulier) sont très souvent utilisées en pratique, car des lien clé -> valeur sont très souvent nécessaires à tous les niveaux d'un programme.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Ok. Je suppose qu'il y a un certain avantage au niveau de la vitesse d'accès aussi.

    Prenons la gestion d'une bibliothèque. Pour les emprunts, on pourrais faire un HashMap qui utilise le code isbn comme key. Mais, il est probablement nécessaire d'éffectuer une recherche sur le titre aussi ainsi que l'auteur.

    Que faire dans ce cas ? Est-ce qu'il est possible d'avoir un conteneur central et d'utiliser les données qu'il contient pour créer des HashMap selon les besoins ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu peux très bien avoir plusieurs hashmap

    isbn -> livre
    auteur -> livre[]
    titre -> livre
    emprunteur -> livres[]

    etc...
    Les hashmap ont une taille proportionnelle au nombre d'entrées qu'elle ont, pas à la taille des entrée.

    Un map qu' contient 50.000 couples clé/valeur aura la même taille (à peu près), quelle que soit les clés / valeurs utilisées

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Donc, on pourrais charger les données dans un Vector ou un ArrayList et transposer les données dans des HashMaps séparées ? Si c'est possible, comment procédes t-on ?

    Je sais qu'on peut faire l'inverse de cette manière ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private HashMap<String, MaClasse> map;
     
    Vector<MaClasse> MesObjets = (Vector<MaClasse>) map.values();

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    un vector ou une List, c'est juste un liste d'item. Pour stocker dans une hashmap, il faut non seulement les valeurs mais aussi des clé. Et ca, java peut pas les inventer, c'est à toi de les créer. Basiquement il faut parcourir ta liste pour ajouter les entrée dans la hasmap sous forme de clé/valeur.

Discussions similaires

  1. Utilisation de plugin dans une application Web
    Par loopx dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 21/01/2008, 23h06
  2. Comment utiliser un paquet dans une application ?
    Par zizo89 dans le forum Langage
    Réponses: 0
    Dernier message: 21/09/2007, 22h48
  3. Utilisation de GStreamer dans une application
    Par bouncebounce dans le forum C++
    Réponses: 4
    Dernier message: 13/04/2007, 16h44
  4. Utilisation de GStreamer dans une application
    Par bouncebounce dans le forum C
    Réponses: 1
    Dernier message: 13/04/2007, 08h24
  5. Utiliser un timer dans une application console
    Par chavers dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2005, 14h07

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