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 :

[J2SE 5.0] Insérer plusieurs type dans une liste. Et les récupérer!


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut [J2SE 5.0] Insérer plusieurs type dans une liste. Et les récupérer!
    Bonjour,
    je suis en train de m'essayer aux nouveautés apportées par la version 5.0 de Java, et notamment aux generics.

    Voila ce que j'ai compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<Integer> theList = new ArrayList<Integer>();
    theList.add(new Integer(1));
    Integer theInteger = theList.get(0); // Plus besoin de cast explicite
    Par contre si ma liste contient un Integer et une String, comment la déclarer?
    Est-ce possible de lui indiquer précisemment les types des paramètres que l'on insère dans la liste?
    J'imagine bien que l'on peut déclarer un supertype commun aux deux paramètres (ici Object), mais il va falloir faire un cast au moment de récupérer les données.

    Merci d'avance pour vos éclaircissements.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par HebusBreizh Voir le message
    J'imagine bien que l'on peut déclarer un supertype commun aux deux paramètres (ici Object), mais il va falloir faire un cast au moment de récupérer les données.
    Si tu veux manipuler plusieurs types il n'y a pas vraiment d'autres solutions...

    a++

  3. #3
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    adiGuba a passé les 6000 messages grâce à ma question... je suis tout ému!

    Flûte alors, c'est bien dommage.
    Ca me semblait difficile à gérer le fait d'avoir plusieurs type: si je récupère le premier élément c'est une String, j'en insère un autre, ça sera un Integer...
    Difficile de faire ça au sein d'une boucle!
    Je vais me débrouiller autrement.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Enfin théoriquement (à l'exception peut être des TableModel) il vaut mieux préserver une certaine unicité de type dans une collection...

  5. #5
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Imaginons que j'ai une collection de données qui contienne la date de validité d'un produit.
    Le produit peut être valide jusqu'à une Date D1.
    Ou le produit peut être valide à partir de la Date D2.
    Dans ce cas là, ma collection (la période de validité) contient une String pour dire si le produit est valide "jusqu'à" ou "à partir de", et une Date (de début ou de fin).

    Est-ce que tu vois une autre structure pour stocker ces données hétérogènes?

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par HebusBreizh Voir le message
    Est-ce que tu vois une autre structure pour stocker ces données hétérogènes?
    Le plus simple serait de se faire une classe qui comporterais ces deux valeurs en attributs. Comme ca les données sont bien liée et ne dépendent pas d'un agencement dans la liste...

    Par exemple (code Java 5.0 utilisant les enums) :
    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
    class Validity {
     
    	/** Enumération qui définit les différents types de validité */
    	public enum Type {
    		UNTIL, FROM;
    	}
     
    	/** Date de validité */
    	private Date date;
    	/** Type de validité */
    	private Type type;
     
    	public Validity(Date date, Type type) {
    		this.date = new Date(date.getTime());
    		this.type = type;
    	}
     
    	public Date getDate() {
    		return new Date(this.date.getTime());
    	}
     
    	public Type getType() {
    		return type;
    	}
     
    	public String getTypeMessage() {
    		switch(this.type) {
    		case UNTIL: return "jusqu'à ";
    		case FROM: return "à partir de ";
    		}
    		return "";
    	}
     
    	@Override
    	public String toString() {
    		return getTypeMessage() + this.date;
    	}
    }
    a++

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par HebusBreizh Voir le message
    adiGuba a passé les 6000 messages grâce à ma question... je suis tout ému!
    Faut pas s'émouvoir pour si peu de chose !

    Citation Envoyé par sinok Voir le message
    Enfin théoriquement (à l'exception peut être des TableModel) il vaut mieux préserver une certaine unité de type au niveau dans une collection...
    +1

    Il faudrait surtout savoir pourquoi tu voudrais faire cela ! [edit] bon ben nos post se sont croisé tu as déjà répondu à cela

    a++

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

Discussions similaires

  1. Insérer plusieurs valeurs dans une colonne
    Par hadjiphp dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2009, 03h14
  2. [MySQL] Insérer plusieurs formulaires dans une seule page
    Par hakou08 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 19/03/2009, 10h37
  3. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  4. [MySQL] insérer plusieurs lignes dans une table
    Par ozyman dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/02/2009, 22h33
  5. Insérer plusieurs enregistrements dans une requete
    Par Xavier3131 dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/05/2008, 17h12

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