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 :

Collection de collection


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Par défaut Collection de collection
    Bonjour, voila je suis actuellement en train de faire un programme en java et je viens de me rendre compte que je dois faire une collection de collection... mais c'est que je ne sais pas du tout comment mis prendre... auriez vous des exemples à me proposer?
    merci
    Elisha

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Que fait ce sujet dans la section Eclipse?!

    Pour repondre à ta question, imaginons un Lycée, avec des classes, et des élèves.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Eleve
    {
        String nom;
        String prenom;
        ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Classe
    {
        ArrayList<Eleve> classe;
        ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Lycee
    {
        ArrayList<Classe> lycee;
        ...
    }
    Rien de bien compliqué!

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    Ca ce n'est pas une collection de collections...

    Alors que ça oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collection<Collection<String>> collections;
    Après la manipulation dépend de l'implémentation choisie.

    Tu peux faire 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
     
    Map<String, List<Voiture>> voitures = new HashMap<String, List<Voiture>>();
     
    // on crée une liste de voitures
    List<Voiture> voituresFord = new ArrayList<Voiture>();
    voituresFord.add(new Voiture("GT"));
    voituresFord.add(new Voiture("Mustang"));
    // tu peux créer une autre liste avec des ferrari par exemple.
     
    // on insère les listes de voitures dans la Map
    voitures.put("ford", voituresFord);
    voitures.put("ferrari", voituresFerrari);
     
    // Et pour les récupérer il suffit de faire 
    List<Voiture> maListeVoituresFord = voitures.get("ford");
    Voiture fordGT = maListeVoituresFord.get(0);
    c'est pas forcément l'exemple le meilleur pour illustrer (notamment les List) mais ça te donne une idée de comment manipuler des collections de collections.

    Après, je te conseille vivement de chercher un cours sur les collections en java. Tu devrais en trouver sur developpez.com.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Par défaut
    bonjour !! merci pour vos messages...
    je viens de lire vos messages et je vais essayer la deuxième proposition.. je pense qu'elle correspond plus à ce que je veux !!!
    merci
    je vous tiens au courant de mon avancement
    Elisha

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Ecrire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Classe> lycee;
    ou ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<ArrayList<Eleve>> lycee;
    donne exactement le même résultat
    A la seule différence qu'en situation réelle seule la 1ère solution sera utilisée.

    Ta solution va à l'encontre des principes fondamentaux de la programmtion objet.

    Avec ce que je propose, si tu veux par exemple rajouter un maillon entre le lycée et les classes, un Niveau (2nde, 1ère, terminale, etc.) par exemple, il me suffit de créer une nouvelle classe Niveau et de changer une seule valeur (Classe qui se transforme en Niveau) dans la classe Lycee.
    Alors que si toi tu veux faire un classement berline, citadine, etc. (on est donc dans le même principe puisque ca irait entre la marque et le model) tu dois modifier tout ton code.

    Alors c'est vrai que ce que je propose n'est pas une vraie collection de collection, mais en temps que professionnel, mon choix est vite fait

    Il faut bien se dire que même si c'est théoriquement possible de faire une collection de collection, puisqu'une collection accepte des objets et qu'une collection est un objet (...), en pratique l'utiliser signifie dans 100% des cas qu'on a louper une étape dans la conception.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    D'abord elisha a demandé une collection de collections, pas une simple collection.
    Tu ne réponds donc à sa demande.

    Ensuite tu te trompes quand tu dis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<ArrayList<String>>
    et c'est la même chose. Ce n'est pas le cas du tout.
    Je te laisse relire quelques cours pour comprendre pourquoi

    Ensuite tu sembles avoir une vision un peu tranchée et superficielle de la manipulation et de l'utilité des collections.
    J'ai souvent l'occasion de manipuler des structures de données où justement on a des collections de collections, et ça permet de faire certaines choses assez élégantes.

    Enfin :
    Ta solution va à l'encontre des principes fondamentaux de la programmtion objet
    Rien que ça ?
    Peux-tu me citer un principe de la POO ?
    Et je corse la chose : Peux-tu me citer un principe de la POO qui contredise ce que je raconte ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Citation Envoyé par sir_gcc Voir le message
    D'abord elisha a demandé une collection de collections, pas une simple collection.
    Tu ne réponds donc à sa demande.
    Je réponds dans un sens pratique, par la meilleure solution d'arriver au résultat.

    Citation Envoyé par sir_gcc Voir le message
    Ensuite tu te trompes quand tu dis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<ArrayList<String>>
    et c'est la même chose. Ce n'est pas le cas du tout.
    Je te laisse relire quelques cours pour comprendre pourquoi
    Je te laisse relire mes deux précédents posts et tu comprendras que ce n'est pas ce que j'ai écris!

    Pour le reste, si on part du principe que c'est contraire au principe de la séparation des classes métiers en unité atomique, à la réutilisabilité, etc. il est difficile de dire que ce soit une manière élégante de programmer.
    Mon exemple me semblait convaincant, mais visiblement tu n'as pas du maintenir des projets à échelles industrielles. Sinon tu comprendrais l'utilité de tout séparer.
    Imagine un peu une collection de collection dans une autre collection avec mon exemple Lycée, Niveau et Classe ou Marque, Type et model

    Enfin autre exemple. Aujourd'hui j'ai décidé d'étendre mon application. Je veux savoir les élèves qui mangent à la cantine. Leur classe et niveau m'est inutile, je veux juste les élèves. Il me suffit de reprendre ma classe Elève et c'est règlé.
    Si j'avais une collection de string (Elève) dans une Collection (Classe), elle-même dans une autre collection (Niveau), tout ca dans une collection (Lycée) ca serait totalement ingérable.

    Pour la vision tranchée, c'est juste une expérience de 5 ans dans le métier. Je pense être à même de diffrencier une bonne d'une mauvaise pratique.

Discussions similaires

  1. Ajouter des lignes aux collections de collections
    Par Helicoid dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/04/2014, 15h45
  2. [Débutant] Utilisation des collections (VisualBasic.Collection) en VB 2005
    Par bolylob dans le forum Framework .NET
    Réponses: 1
    Dernier message: 29/10/2013, 14h34
  3. Implémentation d'une collection de collection
    Par thomine dans le forum Hibernate
    Réponses: 7
    Dernier message: 21/03/2005, 09h24
  4. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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