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 :

clé d'un Map formée par deux attributs


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut clé d'un Map formée par deux attributs
    Bonjour,

    Je voudrais creer une Map des objets. Mon probleme c'est que chaque objet peut etre identifier par deux attribut. Par exemple :
    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
     
    public class monObjet {
     String s1;
     String s2;
     
    ............
     
    }
     
    public class objectManager {
    Map monMap = new HashMap();
    ...
    monMap.add(key,monObjet) ;
    .....
     
    }
    Donc mon probleme c'est de choisir une clé qui me permet ,si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monObjet obj = monMap.get(s1)
    ou si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monObjet obj = monMap.get(s2)
    de recuperer le meme objet du classe monObjet.

    Est ce que c'est possible ?

    Merci

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Une solution serait de creer une classe qui représente ta clé.
    Dans cette classe tu dois surcharger les méthode "equals" et "hashCode"
    Tu pourras ainsi utiliser un objet de cette classe comme clé dans ta Map.

    En esperant t'avoir un peu aidé
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Meme probleme
    Bonjour,

    Je pense que j'ai presque le meme probleme;

    J'ai créé une classe Mobile avec un seul attribut qui est le num_tel
    J'ai créé une autre classe Opérateur qui sert à gérer les mobiles
    J'ai fait la collection des mobiles à l'aide d'un HashMap qui a comme clé La classe mobile et comme valeur un nom que j'ajouterai moi meme
    Donc ça devient comme suit: HashMap<Mobile, String>
    DOnc ma question c'est que j'aimerai bien utilier le num_tel comme clé et pas l'objet meme "Mobile"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Mobile
    {
     
        public Mobiel(int num){   
     
            this.num=num;
                }
     
        public int getnum(){
        return this.num;
        }
     
    }
    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
    import java.util.*;
     
    public class Provider
    {
        public HashMap<Mobiel,String> map;
        public Mobiel mobiel;
     
        public Provider()
        {
            map = new HashMap<>();
        }
     
     
        public void addMobiel(Mobiel key, String value){
            map.put(key,value);
        }
     
     
     
        public String trouverMobile(String key){
            if (map.containsKey(mobiel.getnum(key))){
            return map.get(key);}
            else{
                return "NOT ok";
            } 
        }
     
     
    }

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour,
    Citation Envoyé par dhiaeddine1987 Voir le message
    Je pense que j'ai presque le meme probleme;
    Absolument pas !
    Le sujet dans lequel tu viens de poster ton message concernait une clé composé de deux informations, ce qui n'est pas ton cas visiblement !

    De plus, vu que tu poste à la suite d'une discussion résolue, le risque est que personne réponde !
    et vu que ton problème est différent, il aurait mieux valu créer une nouvelle discussion.

    Citation Envoyé par dhiaeddine1987 Voir le message
    J'ai créé une classe Mobile avec un seul attribut qui est le num_tel
    J'ai créé une autre classe Opérateur qui sert à gérer les mobiles
    J'ai fait la collection des mobiles à l'aide d'un HashMap qui a comme clé La classe mobile et comme valeur un nom que j'ajouterai moi meme
    Donc ça devient comme suit: HashMap<Mobile, String>
    DOnc ma question c'est que j'aimerai bien utilier le num_tel comme clé et pas l'objet meme "Mobile"
    je ne vois pas trop ou est ton problème ?

    Si tu es en java 1.5 ou plus (l'autoboxing transforme ton int en Integer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put(mobile.getnum(),value);
    Si tu es dans une version antérieur a java 1.5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put(Integer.valueOf(mobile.getnum()),value);
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [11g] Classer par ordre alphabétique deux attributs
    Par ThibaudJER dans le forum SQL
    Réponses: 6
    Dernier message: 20/11/2014, 22h54
  2. calcul de l'angle formé par deux droites dans l'espace
    Par liogo dans le forum Mathématiques
    Réponses: 2
    Dernier message: 30/03/2011, 16h32
  3. map index par un attribut
    Par seddik_saber dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 17/11/2008, 20h00
  4. Réponses: 7
    Dernier message: 02/02/2005, 20h32
  5. [math] equ sinusoide passant par deux points
    Par ddams dans le forum Mathématiques
    Réponses: 11
    Dernier message: 24/05/2003, 14h12

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