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 :

Map et clef sous forme de paire


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut Map et clef sous forme de paire
    Bonjour,

    je cherche la meilleur façon de créer une map dont les clefs seraient un couple de 2 entiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Map<key(Integer, Integer), PaffDescriptor> map;
    comment faire cela ? faut-il bidouiller en passant par une représentation sous forme de String de ma clef ? "entier1 - entier2" ? ou il y a mieux ?


    Merci.

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Pourquoi ne pas simplement définir une classe Paire/Couple/... pour ça?

  3. #3
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    Vendu !

    précision : il faut bien coder equals et hashCode ?

    merci

  4. #4
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Il faut en effet coder equals et hashCdoe pour que la HashMap fonctionne.

  5. #5
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    Merci bien.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Je comprends pourquoi il faut coder equals, mais pourquoi faut-il coder hashCode ? Et "comment" la coder, que doit elle contenir ?
    Si la méthode hashCode est absente (pour les classes servant de clé dans les HashMap j'entend), y a t il risque de bug ?

  7. #7
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    J'utilise personnelement netbeans qui me génère hashCode en fonction des éléments que je veux vérifier (ceux que je considère comme important dans la vérification)

    Voci par exemple mon code donc pour ma clef double entier, elle implémente Comparable parceque je doit utiliser des Treemap avec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    public class PaffMapKey implements Comparable<PaffMapKey>
    {
        private int	id;
        private int	classe;
     
        public PaffMapKey(int id, int classe)
        {
    	this.id		= id;
    	this.classe	= classe;
        }
     
        public int getClasse()
        {
    	return classe;
        }
     
        public void setClasse(int classe)
        {
    	this.classe	= classe;
        }
     
        public int getId()
        {
    	return id;
        }
     
        public void setId(int id)
        {
    	this.id	= id;
        }
     
        @Override
        public boolean equals(Object obj)
        {
    	if(obj == null)
    	{
    	    return false;
    	}
     
    	if(getClass() != obj.getClass())
    	{
    	    return false;
    	}
     
    	final PaffMapKey	other	= (PaffMapKey) obj;
     
    	if(this.id != other.id)
    	{
    	    return false;
    	}
     
    	if(this.classe != other.classe)
    	{
    	    return false;
    	}
     
    	return true;
        }
     
        @Override
        public int hashCode()
        {
    	int	hash	= 7;
     
    	hash	= 79 * hash + this.id;
    	hash	= 79 * hash + this.classe;
     
    	return hash;
        }
     
        @Override
        public int compareTo(PaffMapKey o)
        {
            if(this.classe < o.classe)
            {
                return -1;
            }
            else if(this.classe > o.classe)
            {
                return 1;
            }
            else
            {
                if(this.id < o.id)
                {
                    return -1;
                }
                else if(this.id > o.id)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }    
            }
        }
    }
    Donc la fonction hashCode doit retourner une valeur identique pour 2 classes donc les entiers seraient identiques 2 à 2 et ne surtout pas pouvoir donner des valeurs identiques pour des couples différents, donc à mon avis il doit être possible de juste utiliser hashCode dans le code de equals, mais à part compareTo, tout le reste est de la génération automatique

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

Discussions similaires

  1. [Joomla!] menu pied de page sous forme de site map
    Par diengkals dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 22/06/2015, 14h08
  2. Requête jpql et paramètres sous forme de Map
    Par Khaled.Noordin dans le forum JPA
    Réponses: 1
    Dernier message: 21/10/2011, 02h15
  3. XSL pour visualiser arbre XML sous forme de tableau en HTML
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 28/03/2003, 10h55
  4. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42
  5. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48

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