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 :

[Hashtable] trier par l'association de deux clefs


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 20
    Par défaut [Hashtable] trier par l'association de deux clefs
    Bonjour,

    Voilà le problème:

    Dans une Hashtable, je manipule mes éléments à l'aide de l'association clef/élément. A une clef correspond systématiquement un élément.

    Dans mon cas, je souhaiterai bénéficier de 2 clefs pour un élément. La combinaison de ces deux clefs me fourni mon élément.
    Je ne vois pas vraiment comment faire (proprement, cad sans rustine algorithmique) pour utiliser 2 clefs au lieu d'une seule...

    Je ne souhaite pas faire de concaténation des "monObject.toString()" pour former une seule clef au final.
    J'aimerai aussi éviter d'imbriquer des hashtable dans mon hashtable.

    toute suggestion est la bienvenue...

    merci

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Il va y avoir forcement de la bidouille algorithmique (moi j'appelle ca programmer mais chacun son vocabulaire )

    Tu peux creer un Objet contenant tes deux cles et qui redefini la methode hashCode pour creer un hash correct, c'est le seul moyen sans passer par une reecriture de Hashtable

    La concatenation des cles, s'etait pas mal comme idee

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 28
    Par défaut
    Tu te crée un objet qui contiendra tes deux clés et c'est cette objet qui sera la clé de ta Hashmap.

    Par exemple tu crée un objet avec un tableau de 2 élément pour contenir les 2 clés
    Ensuite tu auras surement besoin de surcharger la méthode "equals" de la classe pour pouvoir comparer sans tenir compte de l'ordre des clés dans ton tableau...

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MySuperKey{
      Object[] keys = new Object[2]
     
      public MySuperKey(Object key1, Object key2) {
        keys[1] = key1;
        keys[2] = key2;
      }
     
      public boolean equals(Object otherSuperKey)
      {
        //... test qui va bien...
      }
    }
    en espérant avoir été clair...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 20
    Par défaut
    yep merci à vous deux...

    j'ai testé la méthode de toub. Ca marche... Je me sentais pas capable de réécrire hashmap tout seul

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Comme le dit bulbo, attention au hashcode de ta classe.
    Si le hashcode de 2 instances est différent, la méthode equals n'est pas utilisée.
    donc, même si le contenu des 2 cléfs est identique, le equals retourne false.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2013] Trier par plus de deux colonnes
    Par Bono_BX dans le forum SharePoint
    Réponses: 3
    Dernier message: 22/01/2014, 08h15
  2. MariaDB - Deux Like, trier par l'un puis l'autre
    Par aaaaadrien dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/12/2013, 10h25
  3. Trier par rapport à deux colonne
    Par albank dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2010, 10h22
  4. [Paradox] Trier par date
    Par Fabs dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2006, 19h41
  5. [FAQ] Trier par ordre... non-alphabétique
    Par kaceo dans le forum Langage SQL
    Réponses: 15
    Dernier message: 02/02/2006, 09h17

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