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

Java Discussion :

Meilleure collection pour filtrer


Sujet :

Java

  1. #21
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    J'ai réfléchit à une possibilité et vous me direz ce que vous en pensez :
    Je créé de 2 fichiers (désolé Joël tu n'es pas d'accord mais c'est juste une réflexion après tu pourras m'insulter si tu veux) :
    1 - booking qui va contenir les infos clients et le n° de résa.
    1 - bookingroom qui va contenir la n° de la chambre, la date et le n° de résa.

    Ensuite, je pensais faire comme ceci :
    Le client réserve la chambre 1 du 25/02 au 28/02, j'enregistre donc le client dans booking et je lui génère un n° de résa 2502TOTO puis j'enregistre dans bookingroom room=1, chekin=25/02/2015, numberofnights=3.
    Un autre client réserve la même chambre mais du 01/03 au 02/03 à ce moment là ! Le gars (c'est une phrase culte de Bigard) je modifie boockingroom room=1 en lui rajoutant uniquement checkin et numberofnights ce qui me donnerait

    <bookingroom>
    <room id=1>
    <resa checkin=25/02/2015 numberofnights=3>2502TOTO</resa>
    <resa checkin=01/03/2015 numberofnights=1>0103BOBY</resa>
    </room>
    </boockingroom>

    Ainsi je pourrais charger dans une collection MAP boockingroom et pour faire des filtres ce sera plus facile, qu'en pensez vous ?

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ok, tu as 5 fichiers. Ça ne change rien si tout est chargé en mémoire. C'est justement la map qui va t'éviter de parcourir toutes les listes. Si ton problème est que tu as un numéro (donc un int, ou peut-être un String), et que la map est Map<Chambre, List<Bookings>>, c'est sûr que pour accèder à la List<Bookings> il te faut le Chambre correspondant, mais il suffit d'une map Map<Integer, Chambre> pour retrouver l'instance de Chambre par son numéro.

    Reprenons, au début tu charges tout :
    • un xml d'hotel (les informations générales, je suppose, son nom, son lieu, etc...) -> chargé dans un objet Hotel
    • un xml de type de chambres (ça c'est de la config : pourquoi pas, ça permet à ton programme d'être paramétrable) -> chargé dans une liste de type de chambres
    • un xml de chambre, un hôtel j'espère (qui contient, pour chaque chambre, donc un numéro, un type de chambre, et je ne sais quoi (s'il y a une télé de 4 m de diamètre, un jacuzi, un minibar...) -> chargé dans une map de Chambre Map<Integer, Chambre>, et éventuellement dans une liste de Chambre (mais ce n'est pas nécessaire, la map suffisant)
    • un xml de client : (voir plus loin) -> chargé dans une map de client Map<Integer (ou String), Customer>
    • un xml de réservations ( qui contient, un id de résa, une période, l'id d'un client, un numéro de chambre) -> chargé dans Map<Chambre, List<Booking>>

    Le problème peut être éventuellement avec le client : charger les 3000 clients qu'on a eu les 10 dernières années, alors qu'on a 30 chambres peut-être un peu lourd pour l'application. Dans ce cas, et pour ce cas uniquement, je pourrais procéder différemment. (En fait, j'avais compris que tu n'avais pas de fichier de client, et que pour chaque réservation tu stockais le client complet.) Donc qu'un même client qui réservait 2 fois, était dupliqué.
    Si on faisait le chargement du client à la volée, donc pas au début, mais uniquement à la demande : ça prendrait un peu de temps (à recharger tout le fichier) à chaque fois qu'on prend une réservation, mais faut voir, ça peut être tolérable. Éventuellement, un chargement partiel en SAX ou Stax pourrait faire gagner globalement du temps.
    Mais puisqu'on charge toutes les réservations, on a au moins en mémoire les clients qui ont une réservation en court : ça permet de gagner pas mal de temps, en particulier, parce que chaque fois qu'on affiche une réservation, on a déjà les infos du client en mémoire (pas besoin de recharger tout le fichier de clients). Et ça me semble largement suffisant, parce que, à part procédure particulière, on s'en fout des clients qui sont venus il y a 10 ans, et jamais revenu. Ceux qui sont important c'est ceux qui ont une réservation, et ceux qui occupent une chambre actuellement, et éventuellement ceux qui auraient fait leur checkout et qui aurait une facturation en cours (ce que ton programme ne gère pas, donc on s'en fout aussi).

    Donc, pour résoudre ça, on peut charger le dom complet du fichier customer.xml, charger le dom du fichier resa.xml, construire la map Map<Chambre, List<Bookings>>, et Map<,Customer> qui ne contient que les clients qui sont dans Bookings (et peut-être aussi dans l'objet qui décrit l'occupation actuelle), et on ensuite on ne conserve pas les DOM en mémoire. Pour sauvegarder un nouveaux client, par contre, il faut recharger tout le DOM du fichier customer.xml. Maintenant, pour simplifier tout ça, peut être que charger les 3000 clients il ne faut pas tant de mémoire que ça.
    Donc peut-être qu'on peut tout simplifier en chargeant toute la map de customer au démarrage. Je veux dire on se prend la tête peut-être pour 100Ko de données maximum pour 10 ans d'utilisation. Sinon, on peut aussi avoir un fichier d'archives avec les vieux clients qui ne reviennent plus depuis 10 ans (qu'on pourrait virer éventuellement) et un fichier des clients actifs, ce qui reviennent régulièrement, et qu'on va charger systématiquement en mémoire au démarrage.

    Si tu as besoin d’accéder à une réservation par une autre clef que la chambre, tu peux utiliser d'autres map : une map par id de réservation Map<Integer/String, Booking>, une map par id de client, etc. Chaque map prend peu de mémoire par rapport aux données réelles qu'elles stockent, qui elles sont en communs, et n'existent en mémoire qu'en une seule version.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jb_One73 Voir le message
    Il me reste exactement 11 jours pour le rendre mais je ne peux pas utiliser de BDD (ce qui est dommage) car les fichiers XML me sont imposés donc, soit je vais brûler un cierge tout de suite en espérant avoir fini à temps soit je rend le travail au point où il en sera.
    La deuxième solution m'ennuie un peu mais je ne suis pas Dieu et on en revient à la 1ere solution, là aussi ça devient compliqué. Celui qui a inventé JAVA à pas dû penser à moi
    Pour avoir fait un serveur d'application avec tout stocker dans des fichiers xml, je peux te dire qu'il n'y a aucun problème pour gérer ça en Java. Et il y avait des milliers d'objet avec des liens entre, et tout. Simplement, chaque objet était dans un fichier différent, chaque objet avec un type et un id, et il y avait juste un index qui faisait le le lien entre un id et un path de fichier xml, qui pouvait être en mémoire ou dans une base de données. Et un cache MRU à base de map pour stocker en mémoire les objets.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Ok ! Joël ! J'ai bien tout lu après avoir tout compris c'est tout autre cependant, l'indication que tu me donnes dans le chargement de mes collections n'est pas tout ça pour être claire toutes mes collections sont de type List.
    Il n'y pas de Integer c'est que du String après je ne me suis jamais servis des collections MAP, il faut que je contrôle que le n° de chambre n'est pas déjà existant et si oui ... ???
    Je me suis dit ce matin en me levant, cool ! je vais faire les résas et les visu aujourd'hui et comme ça il ne me restera plus que les résas auto et facture demain et en fait depuis ce matin je suis sur les résas et je n'ai même pas avancé. c'est un truc de dingue à chaque que j'ai l'impression de voir la fin du tunnel et bien non il y a autre chose.
    Joël ! Toi qui a fait 3.5millions de lignes de code, tu dors bien la nuit ou tu as déjà cassé 15 TV ???
    Ca va faire 3 semaines que je là dessus et j'avance pas d'un yota

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jb_One73 Voir le message
    Ok ! Joël ! J'ai bien tout lu après avoir tout compris c'est tout autre cependant, l'indication que tu me donnes dans le chargement de mes collections n'est pas tout ça pour être claire toutes mes collections sont de type List.
    Comme on a parlé de Map avant, je pensais que tu étais passé aux Map.
    Avec une liste tu es obligé de tout parcourir...
    Citation Envoyé par Jb_One73 Voir le message
    Il n'y pas de Integer c'est que du String
    ça n'a pas grande importance pour le principe.

    après je ne me suis jamais servis des collections MAP, il faut que je contrôle que le n° de chambre n'est pas déjà existant et si oui ... ???
    Ça n'a rien de sorcier. 2 façons pour l'écriture :

    • Si on charge l'ensemble de données (donc on est à l'initialisation), par exemple, des Clients, des Rerservations, des Chambres, on doit avoir une clef (donc l'id pour le clients, le numéro pour la chambre, etc.

      Là ou aujourd'hui tu as un code qui fait :

      tu vas avoir un code qui fait
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      map.put( machin.getId(), machin )
      Pas compliqué, si ?
    • Si on a un système du genre : je veux créer un nouvel objet s'il existe pas dans ma list ou map map, on fait un truc du genre
      Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       s'il existe pas dans ma map, je le créé, le le met dans le map et je le retourne
      sinon je le prend dans ma map et je le retourne

      donc là ou tu as aujourd'hui :

      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
      Machin chercher( id ) {
       
            for(Machin machin : list ) {
               if ( machin.getId().equals( id) )  {
       
                    return machin;
               }
       
           }
       
            Machin nouveaumachin = new Machin(id);
            list.add( nouveaumachin );
            return nouveaumachin
       
      }
      tu auras :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      Machin chercher( id ) {
       
            if ( map.containsKey(id) ) {
                return map.get(id);
            }
       
            Machin nouveaumachin = new Machin(id);
            map.put( id, nouveaumachin );
            return nouveaumachin
       
      }
      ou :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      Machin chercher( id ) {
       
            Machin machin = map.get(id);
            if ( machin == null ) {
               machin = new Machin(id);
               map.put( id, machin );
            }
       
            return machin
       
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Bonjour Joël,

    De retour sur mes collections, alors j'ai un petit avancé mais comme d'habitude je but sur un nouveau problème (ça devient une fâcheuse habitude). Comment fais-tu pour récupérer les valeurs d'une Hashtable dont la structure est la suivante :

    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
     
    public void AddXMLBooking (Hashtable<String,Booking> dataBooking) throws ParserConfigurationException, SAXException, IOException{
     
            /** Etape 1 : récupération d'une instance de la classe "DocumentBuilderFactory" */
            final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
     
            try{      
                /** Etape 2 : création d'un parseur */
                final DocumentBuilder builder = factory.newDocumentBuilder();
     
                /** Etape 3 : création d'un Document */
                final Document document = builder.parse(new File(XmlDoc));
     
                // Element racine
                Element racine = document.getDocumentElement();
     
                Enumeration e = dataBooking.elements();
     
                while (e.hasMoreElements()) {
     
                    // Début du corps
                    final Element customer = document.createElement("customer");
                    customer.setAttribute("id",e.nextElement());                             // <--- LE PROBLEME EST ICI, IL ME DEMANDE DE CASTER EN STRING
                    customer.setAttribute("checkin",next.getCheckin());
                    customer.setAttribute("numberofnights",next.getNumberofnights());
                    racine.appendChild(customer);
     
    /** Je ne met pas la suite car c'est la même chose */
    Je n'arrive ni à récupérer la clé, ni à récupérer mes valeurs de ma classe Booking qui contient : firstname, lastname, etc avec une list c'était plus simple car il m'afficher directement toutes les méthodes de ma classe Booking.

    Voilà mon nIème problème et il n'est que 8h10 (ça commence mal).

    Merci d'avance.

  7. #27
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Cool ! J'ai trouvé ! En fait il ne faut pas que je passe par "Enumeration" car je n'est pas la possibilité de récupérer mes boonking, j'ai fait directement ceci est ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (int i = 0; i < htBooking.size(); i++) {
          htBooking.get(i).getIdbooking();
    }
    J'avance ! Pas trop vite mais bon ...

    A toute à l'heure ! C'est sur !

  8. #28
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Pourquoi utilises-tu des Hashtable ? On t'a parlé de HashMap. Ce n'est pas gravissime, mais une Hashtable c'est un type qui est prévu pour fonctionner en multithread (elle est synchronisée), ce qui plombe un peu ses performances. En plus elle ne permet ni clef null, ni valeur null.

    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0; i < htBooking.size(); i++) {
          htBooking.get(i).getIdbooking();
    }
    Tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (Bookings booking : htBooking) {
          booking.getIdbooking();
    }
    A l'occasion, va voir aussi les possibilités des streams.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #29
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Merci pour ta réponse, je viens d'appliquer les modifs donc c'est tout bon, en même temps il n'y avait pas grand chose à faire. J'ai encore une question :
    Comment fait-on pour modifier une valeur et/ou clé dans une TreeMap ?

    Merci d'avance.

  10. #30
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Je crois que j'ai trouvé ça doit être ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmRoom.replace(entree.getKey(),new Room(jTFIdRoom.getText(), jCBIdTypeRoom.getSelectedItem().toString(), state));
    Exact ?

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jb_One73 Voir le message
    Je crois que j'ai trouvé ça doit être ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmRoom.replace(entree.getKey(),new Room(jTFIdRoom.getText(), jCBIdTypeRoom.getSelectedItem().toString(), state));
    Exact ?
    Là, sorti du contexte, je ne sais pas trop. C'est quoi tmRoom ?

    Plus généralement :

    • pour remplacer une valeur associée à une clef, il suffit de remettre la nouvelle valeur associée à la clef, l'ancienne valeur est enlevée de la map :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      map.put( "1", 2 );
      // la map à 2 associé à "1"
      map.put( "1", 3 );
      // la map à 3 associé à "1", et le 2 n'y est plus associé à "1"
      Autrement dit : il ne peut y avoir qu'une seule valeur associée à une clef à un instant t
      On peut aussi faire des remplacements lorsqu'on parcourt l'entrySet :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      for(Map.Entry<String, String> entry : map.entrySet() ) {
       
          // exemple de principe
          if( "truc".equals( entry.getKey() ) && "machin".equals( entry.getvalue() ) {
                 entry.setValue("bidule");
          }
       
      }
    • On ne peut pas remplacer une clef. On enlèvera l'ancienne association, puis on créera une nouvelle :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      valeur = map.remove(oldKey);
      map.put(newKey, valeur);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Les meilleurs livres pour PHP ?
    Par Community Management dans le forum Livres
    Réponses: 187
    Dernier message: 24/05/2015, 04h30
  2. Quels sont les meilleurs livres pour UML ?
    Par Matthieu Brucher dans le forum Livres
    Réponses: 33
    Dernier message: 31/01/2014, 11h36
  3. Les meilleurs livres pour l'Assembleur
    Par gtr dans le forum Livres
    Réponses: 52
    Dernier message: 25/09/2010, 11h25
  4. explications pour filtrer une collection avec iterator
    Par touftouf57 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/01/2010, 11h32
  5. Réponses: 3
    Dernier message: 11/06/2008, 17h47

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