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 :

[Tableaux][Collections]Concaténer des tableaux


Sujet :

Collection et Stream Java

  1. #1
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut [Tableaux][Collections]Concaténer des tableaux
    Bonjour

    J'ai un petit souci pour trouver la manière la plus simple pour concaténer des tableaux simples.

    Ex :

    Object[] tab1 = new Object[5];
    Object[] tab2 = new Object[5];

    Je voudrais un tab3 contenant tab1 et tab2

    Comment faire ? Existe une manière simple de faire ça ?

    Merci d'avance

  2. #2
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Hello,

    au pire tu boucles
    Sinon tu peux passer par des subterfuges style:
    Arrays.asList(object[] a) puis par les méthodes addAll des Lists pour les concaténer et finir par un toArray()...
    Franchement, j ne sais pas si une telle méthode est plus rapide (j'ai des doutes...)

    Mais je suis curieux de voir d'éventuelles autres idées...

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    Avec la méthode statique "System.arraycopy".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Object[] tab1 = new Object[5];
    Object[] tab2 = new Object[5];
     
    Object[] tab3 = new Object[0];
     
    /* arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  */
    System.arraycopy(tab1, 0, tab3, 0, tab1.length);
    Sytsem.arraycopy(tab2, 0, tab3, tab3.length+1, tab2.length);
    Sans garantie ;-)
    Bien le bonjour chez vous
    Jowo

  4. #4
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par jowo
    Bonjour,

    Avec la méthode statique "System.arraycopy".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Object[] tab1 = new Object[5];
    Object[] tab2 = new Object[5];
     
    Object[] tab3 = new Object[0];
     
    /* arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  */
    System.arraycopy(tab1, 0, tab3, 0, tab1.length);
    Sytsem.arraycopy(tab2, 0, tab3, tab3.length+1, tab2.length);
    Sans garantie ;-)
    C'est pas mal !
    sauf que la 2ème copie doit être la suivante:
    System.arraycopy(tab2, 0, tab3, tab1.length+1, tab2.length);

  5. #5
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Voilà le même code avec un garantie jusqu'à la découverte du prochain bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            Object[] tab1 = {new Integer(1), new Integer(2), new Integer(3), new Integer(4), new Integer(5)};
            Object[] tab2 = {new Integer(6), new Integer(7), new Integer(8)};
     
            Object[] tab3;
     
            /* arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  */
            tab3 = new Object[tab1.length + tab2.length];
            System.arraycopy(tab1, 0, tab3, 0, tab1.length);
            System.arraycopy(tab2, 0, tab3, tab1.length, tab2.length);
            for (int i = 0; i < tab3.length; ++i) {
            	System.out.println(tab3[i]);
            }
    Bien le bonjour chez vous
    Jowo

  6. #6
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    J'ai opté pour cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (Object object : tab1) {
       list.add(object);   
    }
     
    for (Object object : tab2) {
       list.add(object);   
    }       
     
    list.toArray(tab3);
    Sachant que dans mon code je n'ai pas 2 tab mais en fait des tableaux qui me sont retournés par une méthode.

    J'ai essayé avec le System.arraycopy mais apparement il faut dimensionner correctement le tableau de destination, et ça je ne le connais pas forcement à la base.

    Merci pour vos aides.

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

Discussions similaires

  1. [WD-2013] Liste des tableaux indépendante de la liste des figures
    Par bendesarts dans le forum Word
    Réponses: 15
    Dernier message: 14/08/2014, 00h18
  2. [XL-2003] Copier des tableaux l'un à la suite des autres
    Par Isabelle86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2010, 14h04
  3. [OPENOFFICE] Transformation des tableaux OOo en HTML
    Par GrandFather dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 15/05/2004, 18h00
  4. Réponses: 2
    Dernier message: 19/08/2003, 18h04
  5. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30

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