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

avec Java Discussion :

probleme avec hashSet


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Points : 15
    Points
    15
    Par défaut probleme avec hashSet
    Bonjour a tous

    J'ai une methode:

    public static Set <String> deleteNonCourseBooks(Set <String> studentBooks)

    cette methode dois enlever les elements reference par studentBooks qui n'apparaisse pas dans courseBooks. Pour cela j'ai utiliser retainAll(), voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static Set <String> deleteNonCourseBooks(Set <String> studentBooks)
          {
            Set<String> courseBooksSet = new HashSet<String>();
            courseBooksSet.add();
     
            Set<String> studentBooksSet = new HashSet<String>();
            studentBooksSet.add(); 
     
            Set<String> keptBooksSet = new HashSet<String>(studentBooks);
            keptBooksSet.retainAll(courseBooksSet);
            return studentBooksSet;
          }
    Chaque livre que l'utilisteur tape est compare avec ceux dans courseBooks, ensuite les titres en communs sont represente dans le display pane et les autres efface. Mon problem est que je ne sais pas quoi declarer pour la methode add(). J'ai penser a declarer une String input mais egal a quoi

    example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    courseBooksSet.add(input);
                  studentBooksSet.add(input);
    Voici ci-dessous le message a tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ReadingList myReadingList = new ReadingList();
    myReadingList.addCourseBook("Morpheus");
    myReadingList.addCourseBook("LOTR");
    myReadingList.addCourseBook("Using UML");
    myReadingList.printBooks(myReadingList.deleteNonCourseBooks(myReadingList.collectBooksRead()));
    Est-ce que quelqu'un a une idee

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    J'ai changer mon code en plus simple:

    public static Set <String> deleteNonCourseBooks(Set <String> studentBooks)
    {
    Set<String> studentBooksSet = new HashSet<String>();
    Set<String> courseBooksSet = new HashSet<String>();
    studentBooksSet.retainAll(courseBooksSet);
    for (String book : studentBooks)
    {
    System.out.println(book);
    }
    return studentBooks;
    }

    Voila je ne comprends pourquoi retainAll ne fonctionne pas, dans le display pane il m'incris tous les livres que je tape

    Est-ce quelqu'un peut m'aider c'est a rendre demain

  3. #3
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static Set <String> deleteNonCourseBooks(Set <String> studentBooks)
    {
    Set<String> studentBooksSet = new HashSet<String>();
    Set<String> courseBooksSet = new HashSet<String>();
    studentBooksSet.retainAll(courseBooksSet);
    for (String book : studentBooks)
    {
    System.out.println(book);
    }
    return studentBooks;
    }
    En fait c'est censé faire quoi?
    Parce que tu crées 2 sets vides et tu fais une intersection de ces deux objets vides, puis finalement tu retournes ce qui a été passé en paramètre (as-tu bien compris comment fonctionne le passage d'objets à une méthode?)

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Je suis desole, j'ai du mal a expliquer l'exercice. je sais que mes sets sont vides, mais je comprends pas comment les initialises. Quand je teste mon code un dialog boxe s'ouvre et demande a l'utiliser de taper le titre d'un livre(il peut en taper autant qu'il veut), une fois fini il presse cancel et si mon code fonctionne le display pane imprime juste les livres en communs avec courseBooks.

    Example:
    Utilisateur tape:

    "Petit Poucet"
    "L'Ogre"
    "Prey"
    "LOTR"

    Le display pane imprime:

    "Prey" et efface les autres.

    Je dois tester mon code comme ci-dessous:

    ReadingList myReadingList = new ReadingList();
    myReadingList.addCourseBook("Prey");
    myReadingList.addCourseBook("Crypto");
    myReadingList.addCourseBook("Using UML");
    myReadingList.printBooks(myReadingList.deleteNonCourseBooks(myReadingList.collectBooksRead()));

    Ce qui me donne mal au crane c'est comment remplir mes 2 sets dans mon code, chaque values est declarer dans l'ecran de test et pas dans le code.

    Je suis desole si je me suis mal expliquer

  5. #5
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Tu peux poster tout le code de ReadingList?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    Oui, le voici

    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    import java.util.*;
     
    /**
     * Instances of the ReadingList class maintain a set of book titles 
     * that are recommended for course and a reading record for each 
     * student on the course.
     * 
     * @author  CT
     * @version 1.0
     **/
     
    public class ReadingList
    {
        //instance variables
        private Set<String> courseBooks;
        private Set<String> readBooks;
        private Map<String, Set <String>> studentRecords;
     
     
        /**
         *  Constructor for objects of class ReadingList     
         */
        public ReadingList()
        {
            super(); 
            this.courseBooks = new HashSet<String>();
            this.readBooks = new HashSet<String>();
            this.studentRecords = new HashMap<String, Set <String>>();
        }
     
        //instance methods
     
        /**
         * Returns the courseBooks of the receiver
         */
        public Set <String> getCourseBooks()
        {
            return this.courseBooks;
        }
     
        /**
         * Add course book title to the courseBookSet
         */
        public void addCourseBook(String title)
        {
          Set <String> courseBooksSet = new HashSet<String>();  
          courseBooks.add(title);
       }
     
        /**
         * Remove course book title from the courseBookSet
         */
        public void removeCourseBook(String title)
        {
           Set <String> courseBooksSet = new HashSet<String>();  
           courseBooks.remove(title);
        }
     
        /**
         * Print book title from the courseBooksSet
         */
        public void printBooks(Set <String> courseBooksSet)
        {
           String newline;
           newline = System.getProperty("line.separator");
           for (String book : courseBooksSet)
           {
              System.out.println(book + newline);
           }
        }
     
        /**
         * Enable students to make a list of the books they have read
         * whether they are on the course reading list or not
         */
        public  static Set <String> collectBooksRead()
        {
           Set <String> readBooksSet = new HashSet<String>(); 
           String dialogString = "Please input a book title or * to finish";
           String input = OUDialog.request(dialogString);
           while(input != null)
           {
           readBooksSet.add(input);
           input = OUDialog.request(dialogString);
           }
           return readBooksSet;
          }
     
     
          /**
           * Method take a single argument of a set of strings called studentBooks,
           * the method delete any elements of the set referenced by studentBooks,
           * that do not occur in courseBooks.
           */
          public static Set <String> deleteNonCourseBooks(Set <String> studentBooks)
          {
            Set<String> studentBooksSet = new HashSet<String>(); 
            Set<String> courseBooksSet = new HashSet<String>();
            studentBooksSet.retainAll(courseBooksSet);
            for (String book : studentBooks)
            {
              System.out.println(book);
            }
            return studentBooks;
          }
    }

  7. #7
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Bon déjà :

    1) En principe on n'appelle pas super() dans un constructeur si on ne lui a pas défini d'héritage.

    2) dans public void addCourseBook(String title)

    à quoi peut bien servir :
    Set <String> courseBooksSet = new HashSet<String>(); ?

    Je pense que c'est de trop

    3) ce qui fait te mélanger les pinceaux selon moi, c'est

    a) les noms courseBooks et courseBooksSet se ressemblent trop sachant que les deux sont des Set.

    b) ta classe contient des méthodes statiques de service qui n'affectent pas l'instance de myReadingList, mets-les dans une autre classe.

    Ensuite reposte le code des deux classes...

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Points : 15
    Points
    15
    Par défaut Merci
    Cher _skip,

    Merci encore ca fonctionne super maintenant, super conseils


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

Discussions similaires

  1. Probleme avec hashSet
    Par tifsa dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2011, 15h25
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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