Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fusionner des tableaux

    27 novembre 2008 à 18:38:29

    J'ai beau chercher dans les tutos, sur le forum et sur les moteurs de recherche, rien à faire, je ne trouve pas.

    Comment fusionner plusieurs tableaux ? (équivalent de array_merge en php pour Java).

    Merci :/
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 novembre 2008 à 19:43:44

      addAll(Collection) pour les List
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2008 à 19:46:53

        On ne peut pas le faire facilement. IL faut le faire en plusieurs étapes.

        En admettant que tu as un premier tableau t1 de taille n et un second tableau t2 de taille m, il faut procéder ainsi :
        1. Créer un tableau temporaire que j'appelle ici tmp de taille n+m.
        2. IL faut copier le contenu de t1 dans la première partie de tmp, ou autrement dit : pour i de 0 à n, faire tmp[i] = t1[i]
        3. IL faut ensuite copier le contenu de t2 dans la seconde partie de tmp. En d'autres termes : pour i de 0 à m faire tmp[i+n] = t2[i]
        4. Maintenant ton tableau tmp est le résultat de la concaténation, ou bien fusion si tu préfères, de t1 avec t2.

        Maintenant il se pose une autre question : si tu possèdes un tableau dont la taille est suceptible de varier régulièrement, pose-toi la question s'il ne vaudrait pas mieux utiliser un objet plus adapté comme une collection, typiquement un set ou une liste. L'avantage est que tu peux les fusionner très facilement grâce à des méthodes prévues pour, par exemple ici tu pourrais utiliser addAll et ainsi ne faire qu'une seule opération (en réalité les trois opérations décrites ci-dessus sont tout de même probablement effectuées , mais ce n'est plus ton problème de savoir comment addAll fonctionne).

        EDIT : grillé, mais je poste quand même, ma réponse étant plus complète.
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2008 à 20:12:52

          int tab[]={1,12};
          	int tab2[]={4,5};
          	int tmp[]=new int[4];
          
          	System.arraycopy(tab,0,tmp,0,2);// les valeurs de tab vers tmp (0 ->2)  
          	System.arraycopy(tab2,0,tmp,2,2);//les valeurs de tab2 vers tmp (2->4)
          
          	for(int i:tmp)
          	{
          		System.out.println(i);
          	}
          
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2008 à 21:50:16

            Oui donc c'est normal que je ne trouvais rien sur internet :-°

            Merci.

            Me suis amusé à recoder une sorte de array_merge très simpliste pour Java du coup, je verrai si j'arrive à faire mieux plus tard, au moins j'arrive à faire ce que je voulais avec.

            Je regarderai plus en détails vaux explications demain.

            Merci encore.
            • Partager sur Facebook
            • Partager sur Twitter

            Fusionner des tableaux

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown