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

Langage Java Discussion :

Accesseur en lecture


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut Accesseur en lecture
    Bonjour,

    J'ai un problème qui peut paraître trivial, mais je bloque dessus. Voilà, Il faut que je programme quelques classes qui pourraient être tuiles à la mise en place de réseaux sociaux. Dans la classe Reseau, il y a ces trois variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private Set<Membre> membres;
    private Map <String, Set<Membre>> fans;
    private Map <String, Set<Membre>> antis;
    J'ai ces accesseurs en lectures à définir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Set<String> getAimesDe (Membre m){}
    public Set<String> getDetesteDe (Memebre m){}
    Je ne sais pas comment m'y prendre pour retourner un set de ce que aime le Membre m. Pouvez-vous m'aider?
    Merci d'avance!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Ben non puisqu'on a aucune idée de ce que tu as déjà comme données.
    On va pas le deviner.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Je n'ai pas de données, j'ai juste des squelettes de classe et des noms de méthodes à l'intérieur

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Même réponse : comment veux-tu qu'on sache qu'est-ce que tu dois récupérer ? On va pas le deviner.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Je crois que j'ai compris, il y a un Map fans pour lequel chaque clé contient un String représentant un objet auquel on associe un set de membres qui aiment cet objet.

    Pareil pour antis.

    il faut donc récupérer un set de l'ensemble des objets qu'aime un membre et un set de l'ensemble des objets que n'aime pas un membre.

    voici une proposition non testée mais qui ne doit pas être loin de la solution :

    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
     
    private Set<Membre> membres;
    private Map <String, Set<Membre>> fans;
    private Map <String, Set<Membre>> antis;
     
     
    public Set<String> getAimesDe (Membre m){
    	Set<String> resultat = new Set<String>();
    	Set listKeys=fans.keySet();  // Obtenir la liste des clés
        	Iterator iterateur=listKeys.iterator();
     
        	// Parcourir les clés et vérifier si membre appartient au set valeur;
        	while(iterateur.hasNext()) {
        		Object key= iterateur.next();
        		if (fans.get(key).contains(m)) {
        			resultat.put((String) key);
        		}
            }
            return resultat;
    }
     
    public Set<String> getDetesteDe (Membre m){
    	Set<String> resultat = new Set<String>();
    	Set listKeys=antis.keySet();  // Obtenir la liste des clés
        	Iterator iterateur=listKeys.iterator();
     
        	// Parcourir les clés et vérifier si membre appartient au set valeur;
        	while(iterateur.hasNext()) {
        		Object key= iterateur.next();
        		if (antis.get(key).contains(m)) {
        			resultat.put((String) key);
        		}
            }
            return resultat;
    }

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Oui, il y a probablement quelque chose de genre.

    Mais quand on cherche une entrée d'un Map, on ne parcourt pas ses clés. On fait un get() sur la bonne directement -_-°...
    Or là nous ne risquons pas de savoir comment obtenir la String correspondante.

    Et de toute façon, la situation n'est pas présentée du tout, c'est n'importe quoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Désolée thelvin d'avoir balancé mon problème comme ça, mais comme ça fait plus de huit heures que je suis sur ce projet, ça me paraissait logique. Bref.

    Au début, je pensait faire comme ludomacho, mais j'ai oublié que j'avais défini une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void aime(Membre m, String theme)
    qui permet de prendre en compte les préférences d'un membre vis à vis d'un thème. Du coup, j'ai écrit ça, mais je ne sais pas si c'est correct:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Set<String> getDetesteDe (Membre m){
    Set<String> s = new Set<String>();
    s = aime(m, theme);
    return s;

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    bonjour,

    toujours dans ma boule de cristal je vois ......


    une erreur dans ton code

    ta méthode aime() ne renvoie rien donc tu ne peux pas écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = aime(m,theme);

    Attends ce n'est pas tout je vois aussi .......

    je pense que ta méthode aime(Membre m,String theme) sert plutot à remplir ta Map fans


    Désolé je ne vois rien d'autre

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Olala, je croyais trop avoir trouvé quelque chose

    Donc obligé de passer par fans/antis. J'aurais écrit un peu près le même code que le tien, de toute façon, je ne vois pas comment faire autrement...

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Non mais sans blaguer, tu nous as juste pas du tout dit de quoi tu parles, en fait.

    On a aucune idée de si tu es obligé de passer par ci ou ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Bonjour,

    Dans mes méthodes qui me sont données, j'en ai aucune qui aideraient à la "fabrication" de ces getAimesDe(Membre m), d'où le fait de n'avoir donné que les variables et les deux méthodes. En gros, faut que cette fonction retourne un Set des thèmes que le membre m aime, donc parcourir la Map fans et à chaque fois que l'on voit que la valeur associée au thème est le membre que l'on veut on met la thème dans notre Set.
    Je pense que globalement, il faut faire ça, sauf que j'ai un peu de mal avec le parcours d'une Map donc je n'arrive pas à l'écrire en Java...

  12. #12
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Salut,

    comme l'a dit Thelvin plus haut, les maps sont faites pour accéder aux données à partir d'une clef. Ce n'est pas du tout fait pour boucler sur les clefs.

    Pour boucler sur un ensemble de valeurs ils y a les HashSet et ArrayList qui sont pratiques et simples à comprendre.

    Tchao !

  13. #13
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    le fond du problème reste un peu obscur, mais je tiens à apporter une précision.

    Si tu souhaites parcourir tes Map, je te conseilles de plutôt parcourir l'ensemble des Entry:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (Entry<String, Set<Membre>> entry : fans.entrySet()) {
       ...
    }
    ça sera plus opportun que de parcourir les clés et de faire un get() à chaque fois...

  14. #14
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    bonjour,

    bonne pratique ou pas tu n'as qu'à regarder ce que j'ai proposé plus haut il y a une implémentation de getAimesDe(Membre)

Discussions similaires

  1. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 17h54
  2. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 10h43
  3. Pb Lecture de bitmap monochrome
    Par Loïc38 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/07/2002, 19h24
  4. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 13h01
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 11h24

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