Comment inverser un tableau en Java

Comment inverser un tableau en Java

1. Vue d'ensemble

Dans cet article rapide, nous allons montrerhow we can invert an array in Java.

Nous allons voir différentes façons de procéder en utilisant des solutions basées sur Java 8 pures - certaines d'entre elles font muter un tableau existant et d'autres en créent un nouveau.

Ensuite, nous examinerons deux solutions utilisant des bibliothèques externes - l'une utilisantApache Commons Lang et l'autre utilisantGoogle Guava.

2. Définir le problème

L'idée de base est d'inverser l'ordre des éléments dans le tableau. Donc, si on me donne le tableau:

fruits = {"apples", "tomatoes", "bananas", "guavas", "pineapples"}

Nous aimerions obtenir:

invertedFruits = {"pineapples", "guavas", "bananas", "tomatoes",  "apples"}

Voyons comment nous pouvons y parvenir.

3. Utilisation d'une bouclefor traditionnelle

La première façon dont nous pourrions penser pour inverser un tableau est d'utiliser une bouclefor:

void invertUsingFor(Object[] array) {
    for (int i = 0; i < array.length / 2; i++) {
        Object temp = array[i];
        array[i] = array[array.length - 1 - i];
        array[array.length - 1 - i] = temp;
    }
}

Comme on peut le constater, le code parcourt la moitié du tableau, modifiant ainsi les éléments dans des positions symétriques.

Nous utilisons une variable temporaire pour ne pas perdre la valeur de la position actuelle du tableau lors de l’itération.

4. Utilisation de l'API Java 8Stream

Nous pouvons également inverser un tableau à l'aide de l'API Stream:

Object[] invertUsingStreams(Object[] array) {
    return IntStream.rangeClosed(1, array.length)
      .mapToObj(i -> array[array.length - i])
      .toArray();
}

Ici, nous utilisons la méthodeIntStream.range pour générer un flux séquentiel de nombres. Ensuite, nous mappons cette séquence en index de tableau dans l'ordre décroissant.

5. Utilisation deCollections.reverse()

Voyons comment inverser un tableau en utilisant la méthodeCollections.reverse():

public void invertUsingCollectionsReverse(Object[] array) {
    List list = Arrays.asList(array);
    Collections.reverse(list);
}


Comparé aux exemples précédents, c'est un moyen plus lisible de faire la tâche.

6. Utilisation d'Apache Commons Lang

Une autre option pour inverser un tableau consiste à utiliser la bibliothèqueApache Commons Lang. Pour l'utiliser, nous devons d'abord inclure la bibliothèque en tant que dépendance:


    org.apache.commons
    commons-lang3
    3.5

La dernière version deCommons Lang peut être trouvée àMaven Central.

Utilisons la classeArrayUtils pour inverser le tableau:

public void invertUsingCommonsLang(Object[] array) {
    ArrayUtils.reverse(array);
}

Comme on peut le constater, cette solution est assez simple.

7. Utiliser Google Guava

Une autre option consiste à utiliser la bibliothèqueGoogle Guava. Tout comme nous l'avons fait avec lesCommons Lang, nous allons inclure la bibliothèque en tant que dépendance:


    com.google.guava
    guava
    22.0

La dernière version peut être trouvée àMaven Central.

Ensuite, nous pouvons utiliser la méthodereverse dans la classeGuava’sLists pour inverser le tableau:

public Object[] invertUsingGuava(Object[] array) {
    List list = Arrays.asList(array);
    List reversed = Lists.reverse(list);
    return reversed.toArray();
}




8. Conclusion

Dans cet article, nous avons examiné différentes méthodes pour inverser un tableau en Java. Nous avons montré quelques solutions utilisant uniquement le noyau Java et deux autres solutions utilisant des bibliothèques tierces -Commons Lang etGuava.

Tous les exemples de code montrés ici peuvent êtrefound on GitHub - il s'agit d'un projet Maven, il devrait donc être facile à importer et à exécuter tel quel.