Comment concaténer deux tableaux (array) de chaînes de caractères (string) en Java ?

Il y a différents moyens pour concaténer deux tableaux en Java. On peut par exemple faire appel à la librairie Appache Commons.

Il y a différents moyens pour concaténer deux tableaux en Java. On peut faire appel à la librairie Appache Commons. La méthode addAll() de la classe ArrayUtils additionne les tableaux donnés en paramètre. Cette méthode peut accepter un nombre indéfini de tableaux. Exemple de code :

Type[] nouveauTableau = ArrayUtils.addAll(premierTableau, secondTableau,...);

Si vous ne souhaitez pas utiliser de dépendances externes, il est possible de développer un concaténeur générique de tableaux en Java natif. On fait appel pour cela à la méthode arraycopy() de la classe System. Avec cette méthode, il est possible de copier un tableau dans un autre, en spécifiant l'index à partir duquel on sélectionne les éléments dans le tableau de départ, et l'index à partir duquel on insère les éléments dans le tableau d'arrivée. Pour raccourcir le code, la méthode copyof() de la classe Arrays crée directement une copie du premier tableau, avec la longueur des deux. Exemple de code :

public static <Type> Type[] concat(Type[] premierTableau, Type[] secondTableau) {
 Type[] nouveauTableau = Arrays.copyOf(premierTableau, premierTableau.length + secondTableau.length);
 System.arraycopy(secondTableau, 0, nouveauTableau, premierTableau.length, secondTableau.length);
 return nouveauTableau;
}

En utilisant l'opérateur ..., on déclare que la méthode accepte un nombre indéfini de tableaux et en modifiant légèrement le code, on obtient une méthode au fonctionnement identique à celui de la méthode addAll() de la classe ArrayUtils.

public static <Type> Type[] concatAll(Type[] premier>Tableau, Type[]... reste) {
int longueurTotale = premierTableau.length;
for (Type[] tableau : reste) {
longueurTotale += tableau.length;
}
Type[] nouveauTableau = Arrays.copyOf(premierTableau, longueurTotale);
int debutCopie = premierTableau.length;
for (T[] tableau : reste) {
System.arraycopy(tableau, 0, nouveauTableau, debutCopie, tableau.length);
debutCopie += tableau.length;
}
return nouveauTableau;
}

Java