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 :

Problème HASHTABLES java


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 131
    Par défaut Problème HASHTABLES java
    Bonjour,
    j'ai une table de hashage defini comme suit
    Cle | Valeur
    ---------|---------------
    L1 | Nom1
    ---------|---------------
    L2 | Nom2
    ---------|---------------
    L3 | Nom3
    ---------|---------------
    ML1 | Nom4
    ---------|---------------
    M1 | Nom5

    La fonction que je doit faire est la suivante :
    L'utilisateur entre une valeur que je recupere appeler name.
    Dans notre exemple name=L alors je veux recuperer toute les cle dont la valeur commence par L soit L1,L2,L3

    Merci si vous avez une idee

    Ldcarpathes

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Par défaut
    ben si tu fais une boucle du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<idType.size();i++)
    			idType.get("name"+i);
    name et une String, donc tu peux la remplacer par "L" ou ce que tu veux..
    ca devrait marcher.

  3. #3
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par ldcarpathes
    Bonjour,
    j'ai une table de hashage defini comme suit
    Cle | Valeur
    ---------|---------------
    L1 | Nom1
    ---------|---------------
    L2 | Nom2
    ---------|---------------
    L3 | Nom3
    ---------|---------------
    ML1 | Nom4
    ---------|---------------
    M1 | Nom5

    La fonction que je doit faire est la suivante :
    L'utilisateur entre une valeur que je recupere appeler name.
    Dans notre exemple name=L alors je veux recuperer toute les cle dont la valeur commence par L soit L1,L2,L3

    Merci si vous avez une idee

    Ldcarpathes
    Si c'est effectivement ce que tu veux faire dans la majorité des cas, tu peux peut-être faire une Map de type String -> Map.

    Ainsi à "L", tu associe la map des clés/valeur dont le nom commence par L.

    Mais tout dépends des requetes que tu comptes faire sur ta Map.

    Sinon, tu peux parcourir le keySet() de la map et faire un startWith() sur chaque élement....

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Tu peux aussi utiliser une TreeMap, avec sa fonction subMap, ça sera probablement plus facile.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Citation Envoyé par denisC
    Si c'est effectivement ce que tu veux faire dans la majorité des cas, tu peux peut-être faire une Map de type String -> Map.

    Ainsi à "L", tu associe la map des clés/valeur dont le nom commence par L.

    Mais tout dépends des requetes que tu comptes faire sur ta Map.

    Sinon, tu peux parcourir le keySet() de la map et faire un startWith() sur chaque élement....
    Oui, ça dépend de la façon dont tu utilises concrètement ta map. Il n'y a aucun intérêt à créer des pairs clé/valeur si tu n'utilises pas directement la clé pour rechercher la valeur.

    Si j'ai bien compris, tu veux faire une recherche en connaissant uniquement L, mais pas précisément si c'est L1, L2, etc. Dans ce cas, la clé de ta map doit être L pour les valeurs NOM correspondant. Sinon comme le propose denisC, tu serais obligé de faire un double hashage.

    Donc, si tu ne cherches jamais les valeurs NOM en connaissant précisément L1, L2, etc, mais seulement L, ce qui semble bien être ton cas, utilise une clé unique pour toutes les valeurs équivalentes :
    Cle | Valeur
    ---------|---------------
    L | {Nom1, Nom2, Nom3}
    ---------|---------------
    ML1 | {Nom4}
    ---------|---------------
    M1 | {Nom5}


    Si tu as aussi besoin de rechercher un nom avec une clé plus fine, rien ne t'empêche d'avoir :
    Cle | Valeur
    ---------|---------------
    L | {Nom1, Nom2, Nom3}
    ---------|---------------
    L1 | {Nom1}
    ---------|---------------
    L2 | {Nom2}
    ---------|---------------
    L3 | {Nom3}
    ---------|---------------
    ML1 | {Nom4}
    ---------|---------------
    M1 | {Nom5}

    Le nombre d'entrée est plus important, mais c'est l'intérêt des algorithmes en log(n) comme ceux utilisés dans Hashtable et HashMap : le temps d'accès aux valeurs augmente moins vite que la taille du tableau.

    [EDIT] Ce modèle nécessite que les valeurs soient des tableaux (ou des List) de NOM, même lorsque tu n'as qu'un seule valeur correspondant à une clé.

Discussions similaires

  1. Problème Hashtable Windows 7 application Java
    Par jippy13 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/02/2012, 10h33
  2. Problème de java.lang.NoClassDefFoundError
    Par nramariavelo dans le forum Hibernate
    Réponses: 5
    Dernier message: 13/06/2006, 14h54
  3. problème sous java
    Par lazzeroni dans le forum Oracle
    Réponses: 4
    Dernier message: 12/04/2006, 15h16
  4. Problème Applet Java et Win XP SP2
    Par octal dans le forum Applets
    Réponses: 4
    Dernier message: 04/02/2006, 09h57
  5. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54

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