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 :

Transformer un tableau de int en tableau Integer ?


Sujet :

Collection et Stream Java

  1. #1
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut Transformer un tableau de int en tableau Integer ?
    Bonjour,

    Je cherche a transformer un tableau de int multidimension en tableau de Integer multidimension.
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int[][] tabInt = ....;
    Integer[][] tabInteger = tabInt;
    Et a mon grand regret ni l'autoboxing, ni le transtypage standard ne fonctionnent.

    Auriez vous une solution mis a part le parcours complet du tableau de int pour reconstruire le tableau d'integer ?

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    si t'utilises Java 6, dirige toi vers la classe Arrays, il y a quelques méthodes intéressantes, notamment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    copyOf(U[] original, int newLength, Class<? extends T[]> newType)

  3. #3
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Effectivement cette méthode est plutot simpa. Domage j'ai pas Java6 sur la machine.

    Bon vu que j'avais pas trop de temps a perdre la dessus, j'ai ecrit la méthode de conversion (pas si longue que ca, faut pas non plus deconner )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private Integer[][] convertTab(int[][] tabInt) {
            Integer[][] tabInteger = new Integer[tabInt.length][tabInt[0].length];
     
            for( int i = 0; i < tabInteger.length; i++ ) {
                for( int j = 0; j < tabInteger[0].length; j++ ) {
                    tabInteger[i][j] = tabInt[i][j];
                }
            }
     
            return tabInteger;
    }
    En tout cas, merci de m'avoir fait découvrir cette nouvelle fonctionnalité

    Si y'a d'autre avsi sur le sujet, comme pourquoi l'autoboxing ne fonctionne pas dans ce cas la, je suis prenneur.

    Nico

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah l'autoboxing ne marche qu'entre un type primitif et son wrapper alors qu'un tableau est une adresse mémoire, rien de plus, donc un table n'est pas un type primitif donc pas d'autoboxing...

    Rien de bien sorcier

  5. #5
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Oui c'est dans la logic des choses.
    On aurait aussi pu imaginer quans dans le cas d'un tableau, si simple soit-il, cela aurait pu être implementé dans le compilateur, mais c'est la qu'il doit y avoir l'exception qui ne permet pas une telle modification.

    Enfin c'est pas grave, je garderais la solution Java6 sous le coude

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par N©O
    Oui c'est dans la logic des choses.
    On aurait aussi pu imaginer quans dans le cas d'un tableau, si simple soit-il, cela aurait pu être implementé dans le compilateur, mais c'est la qu'il doit y avoir l'exception qui ne permet pas une telle modification.

    Enfin c'est pas grave, je garderais la solution Java6 sous le coude
    Si tu as résolu ton problème, n'oublie pas de l'indiquer avec le bouton en bas de cette page

  7. #7
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Il risque quand même d'y avoir des problèmes avec les tableaux de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      {1, 2},
      {3, 1, 2}
    }
    Il n'y aura pas d'erreur, mais la méthode n'aura pas le fonctionnement attendu.

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      {1, 2, 3},
      {3, 1}
    }
    cette fois ci, il y aura un beau ArrayIndexOutOfBoundsException

  8. #8
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par wichtounet
    Si tu as résolu ton problème, n'oublie pas de l'indiquer avec le bouton en bas de cette page
    Ce n'était pas ma journée aujourd'hui

  9. #9
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par yann2
    Bonjour

    Il risque quand même d'y avoir des problèmes avec les tableaux de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      {1, 2},
      {3, 1, 2}
    }
    Il n'y aura pas d'erreur, mais la méthode n'aura pas le fonctionnement attendu.

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      {1, 2, 3},
      {3, 1}
    }
    cette fois ci, il y aura un beau ArrayIndexOutOfBoundsException
    J'ai un tableau a dimension parfait (une matrice) alors j'ai fait un truc rapide, c'est n'était pour apporter une solution viable a proposer.
    Excusez si cela a été pris comme tel

  10. #10
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Citation Envoyé par N©O
    J'ai un tableau a dimension parfait (une matrice) alors j'ai fait un truc rapide, c'est n'était pour apporter une solution viable a proposer.
    Excusez si cela a été pris comme tel
    Vue le code, je me doutais bien que tu avais des matrices. J'ai juste fais la précision dans le cas où quelqu'un prendrait le code sans y faire attention. Puisque tu attends des matrices, tu devrais quand même lancer une exception pour le cas où le tableau est irrégulier. Ce n'est pas long à faire et il y a certainement plus à gagner qu'à perdre. Mais bon, je chipote.

    yann

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

Discussions similaires

  1. comparer 2 tableau de int avec marge d erreur
    Par jerome86600 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 17/07/2006, 14h31
  2. Procédure stocké, un tableau de int en paramètre
    Par Oberown dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/06/2006, 10h44
  3. Convertir un caractere d'un tableau en int
    Par Battosaiii dans le forum C
    Réponses: 8
    Dernier message: 21/03/2006, 16h28
  4. aide manipulation tableau de int
    Par capone dans le forum C++
    Réponses: 4
    Dernier message: 30/01/2006, 11h55
  5. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42

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