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 :

Choisir le bon type de "collection"


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut Choisir le bon type de "collection"
    Bonjour tous le monde,

    Voila, java et moi ça ne fais pas très longtemps et débugger du code, pas de souci, par contre lorsqu'il faut implémenter de nouvelles choses ça se complique.

    Je voudrais créer un "tableau" qui contient tout un tas de données mais le problème est que je ne connais pas la taille qu'il doit faire, donc les classique Array sont à proscrire.

    Je voudrais réaliser quelque que chose qui soit en mode cléf => valeur, mais par moment et pour certaines clefs seulement valeur devra être une nouvelle clef : en gros plusieurs dimension sans connaitre le nombre de dimension

    En mode schéma cela donne quelque chose comme ca :

    site[1][mac] =
    site[1][equi][equi1] =
    site[1][equi][equi1][poi][poi1][stat] =
    site[1][equi][equi1][poi][poi1][time] =
    site[1][equi][equi1][poi][poi2][stat] =
    site[1][equi][equi1][poi][poi2][time] =
    site[1][equi][equi2][poi][poi1][stat] =
    site[1][equi][equi2][poi][poi1][time] =
    site[2][mac] =
    site[2][equi][equi1] =
    site[2][equi][equi1][poi][poi1][stat] =
    site[2][equi][equi1][poi][poi1][time] =
    site[2][equi][equi2][poi][poi1][stat] =
    site[2][equi][equi2][poi][poi1][time] =

    Donc j'ai pensé utilisé aux type hashmap ou hashtable avec leurs methode put, mais est ce qu'avec cette méthode ,je peux faire quelque chose du genre put(key, new Hashmap/table) et donc commencer une nouvelle dimension ?


    Voila j'espère être à peu près clair et merci d'avance !
    Quand on va de l'avant on avance !!!!

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Tu peux toujours essayer...? En fait, un accès par l'index, comme dans un array classique, est généralement peu adapté, sauf bien sûr quand l'index a un intérêt par lui-même, ou bien quand la vitesse d'accès est prioritaire...?
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    FAQ DVP collections

    Pour ma part, je pense que j'utiliserais une HashMap<String, Object>.

    Cela permets d'ajouter une nouvelle HashMap pour une clé donnée.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Comme je ne récupère pas mes données de façon ordonnée, j'ai besoin de pouvoir revenir dans mon tableau pour lui ajouter des valeurs, et je suis ouvert a toutes les solutions, parce que la je galère un peu sur quoi choisir comme type de données
    Quand on va de l'avant on avance !!!!

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Vu ce que tu présente, pourquoi tu ne crée pas des objets qui correspondent à ta structure plutot que de jouer avec des clé / valeur. Parce que typiquement ce que tu nous présente comme des clés d'un hastable, ce sont des propriété d'objet. Donc tu devrais plutot avoir un truc du genre

    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
    public class PointOfSale {
        private String stat;
        private String time;
        // + getters & setters
    }
     
    public class Equipment{
         private List<PointOfSale> pointsOfSale;
         // + getters and setters
    }
    public class Site {
        private String mac;
        private List<Equipement> equipments;
        // + getters / setters
    }
    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
    List<Site> sites = new ArrayList<Sites>();
    Site site = new Site(mac);
    Equipment equi = new Equipment();
    equi.pointsOfSale().add(new PointOfSale(...,...)); // stat/time poi1
    equi.pointsOfSale().add(new PointOfSale(...,...)); // stat/time poi2
    site.addEquipment(equi);
    equi = new Equipment(); //equi2
    equi.pointsOfSale().add(new PointOfSale(...,...)); // stat/time poi1
    site.addEquipment(equi);
    sites.add(site); // site1
    site = new Site(mac);
    equi = new Equipment(); //equi1
    equi.pointsOfSale().add(new PointOfSale(...,...)); // stat/time poi1
    site.addEquipment(equi);
    equi = new Equipment(); //equi2
    equi.pointsOfSale().add(new PointOfSale(...,...)); // stat/time poi1
    site.addEquipment(equi);
    sites.add(site); // site2

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    FAQ DVP collections

    Pour ma part, je pense que j'utiliserais une HashMap<String, Object>.

    Cela permets d'ajouter une nouvelle HashMap pour une clé donnée.

    Cela veux dire que je peux faire quelque chose dure genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HashMap prout = new HashMap(String, Object);
    HashMap pouet = new HashMap(String, Object); 
    prout.set('1', pouet);
    je crois que je commence à voir une petite lumière au bout du tunnel
    Quand on va de l'avant on avance !!!!

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Maudit rafraichissement

    Merci @ tchize_ je viens de voir ce que tu proposes, je me penches dessus
    Quand on va de l'avant on avance !!!!

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    Citation Envoyé par bedomon Voir le message
    Cela veux dire que je peux faire quelque chose dure genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HashMap prout = new HashMap(String, Object);
    HashMap pouet = new HashMap(String, Object); 
    prout.set('1', pouet);
    je crois que je commence à voir une petite lumière au bout du tunnel
    Oui tu peux.

    Mais si tu es sur que tes données suivent un certain format connu d'avance, la solution de tchize_ est surement plus facile à utiliser.

    Mais de manière totalement générique, tu peux utiliser les HashMap.

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    tu peux aussi utiliser Groovy qui supporte les tableaux associatifs (comme ton exemple)

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

Discussions similaires

  1. PROC GLM : choisir le bon type SS en SAS?
    Par ganod dans le forum SAS STAT
    Réponses: 1
    Dernier message: 12/10/2009, 21h08
  2. Choisir le bon type de jointure LEFT ou INNER?
    Par cmako dans le forum Développement
    Réponses: 9
    Dernier message: 08/10/2009, 11h54

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