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 :

Obtenir un Object[][] à partir d'une ArrayList d'object[]


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Par défaut Obtenir un Object[][] à partir d'une ArrayList d'object[]
    Bonjour à tous,

    J'ai une ArrayList qui contient des Object[].
    J'aimerais à partir de cette liste obtenir un Object[][].

    Comment faire ?

    PS :
    j'ai tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] l = (Object[][]) list.toArray();
    sans succès, j'obtiens l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object;

  2. #2
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    La doc spécifie bien comme retour un Object[] et non un Object[] donc tu ne peux pas avoir ce que tu veux.

    Ce que tu peux avoir par contre c'est un tableau ayant comme éléments que des tableaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Object[] l = list.toArray();
    for(int i=0; l.length; i++)
    {
        Object[] ll = (Object[])l[i];
    }

  3. #3
    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 gufra Voir le message
    j'ai tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] l = (Object[][]) list.toArray();
    sans succès, j'obtiens l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object;
    C'est normal puisque toArray() renvoi un Object[] quel que soit le type de la liste. Un Object[] peut contenir n'importe quel type (même d'autres tableaux puisque les tableaux hérite de Object), mais un Object[] ne peut pas être caster en Object[][] puisque justement il peut contenir autre chose que des Object[]...


    Si tu veux avoir un tableau typé il faut utiliser toArray(Object[]) de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] array = (Object[][]) list.toArray(new Object[list.size()][]);
    a++

    PS : A noter que le cast devient inutile avec les Generics...

  4. #4
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    C'est normal puisque toArray() renvoi un Object[] quel que soit le type de la liste. Un Object[] peut contenir n'importe quel type (même d'autres tableaux puisque les tableaux hérite de Object), mais un Object[] ne peut pas être caster en Object[][] puisque justement il peut contenir autre chose que des Object[]...


    Si tu veux avoir un tableau typé il faut utiliser toArray(Object[]) de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] array = (Object[][]) list.toArray(new Object[list.size()][]);
    a++

    PS : A noter que le cast devient inutile avec les Generics...
    oui ca marche aussi

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] array = (Object[][]) list.toArray(new Object[list.size()][]);
    Merci, ca marche mieux

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

Discussions similaires

  1. [Requête]Comment obtenir un montant à partir d'une période saisie
    Par holoaccess dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 30/03/2007, 11h08
  2. Obtenir la CSS à partir d'une page Web?
    Par Henny dans le forum Modules
    Réponses: 5
    Dernier message: 09/12/2006, 21h37
  3. obtenir JComponent a partir d'une chaine
    Par Zorgz dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 01/11/2006, 15h28
  4. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07
  5. Réponses: 4
    Dernier message: 07/01/2006, 18h36

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