Java Programming

Concaténation efficace de tableaux en Java

Spread the love

Java ne propose pas d’opération intégrée de concaténation de tableaux. Les tableaux ayant une taille fixe, combiner deux tableaux nécessite de créer un nouveau tableau plus grand et d’y copier les éléments. Cet article explore trois méthodes efficaces pour y parvenir.

Table des matières

Utilisation de addAll() de Apache Commons Lang

La bibliothèque Apache Commons Lang fournit la méthode addAll() pratique au sein de sa classe ArrayUtils. Cela simplifie considérablement la concaténation de tableaux. Tout d’abord, ajoutez la dépendance à votre projet (par exemple, en utilisant Maven) :

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version> <!-- Utilisez la dernière version -->
</dependency>

Ensuite, utilisez-la comme suit :

import org.apache.commons.lang3.ArrayUtils;

public class ArrayConcatenation {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int[] concatenatedArray = ArrayUtils.addAll(array1, array2);

        for (int i : concatenatedArray) {
            System.out.print(i + " "); // Sortie : 1 2 3 4 5 6
        }
    }
}

Cette approche est propre et efficace, mais introduit une dépendance externe.

Exploitation de System.arraycopy()

La méthode intégrée System.arraycopy() de Java fournit une solution native. Cette méthode copie une partie d’un tableau vers un autre. Elle nécessite la création manuelle de tableaux et la gestion des index :

public class ArrayConcatenation {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int[] concatenatedArray = new int[array1.length + array2.length];

        System.arraycopy(array1, 0, concatenatedArray, 0, array1.length);
        System.arraycopy(array2, 0, concatenatedArray, array1.length, array2.length);

        for (int i : concatenatedArray) {
            System.out.print(i + " "); // Sortie : 1 2 3 4 5 6
        }
    }
}

Cette méthode est efficace et évite les bibliothèques externes, mais elle est moins concise.

Concaténation manuelle avec des boucles

Une approche plus explicite, bien que moins efficace, consiste à itérer sur les deux tableaux et à remplir un nouveau tableau :

public class ArrayConcatenation {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int[] concatenatedArray = new int[array1.length + array2.length];

        for (int i = 0; i < array1.length; i++) {
            concatenatedArray[i] = array1[i];
        }
        for (int i = 0; i < array2.length; i++) {
            concatenatedArray[array1.length + i] = array2[i];
        }

        for (int i : concatenatedArray) {
            System.out.print(i + " "); // Sortie : 1 2 3 4 5 6
        }
    }
}

Cette méthode est simple et facile à comprendre, ce qui la rend adaptée aux débutants. Cependant, elle est moins efficace que les autres méthodes, surtout pour les grands tableaux.

L’approche optimale dépend de vos priorités : addAll() offre la concision, arraycopy() offre l’efficacité sans bibliothèques externes, et la boucle manuelle offre la clarté. N’oubliez pas d’adapter le code pour différents types de tableaux (par exemple, String[], double[]).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *