Comment inverser un tableau en Java

1. Aperçu

Dans cet article rapide, nous montrerons comment inverser un tableau en Java.

Nous verrons différentes façons de le faire en utilisant des solutions basées sur Java 8 pures - certaines d'entre elles mutent un tableau existant et d'autres en créent un nouveau.

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

2. Définition du problème

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

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

Nous aimerions obtenir:

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

Voyons quelques moyens de le faire.

3. Utilisation d'une boucle for traditionnelle

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

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 nous pouvons le voir, le code parcourt la moitié du tableau, changeant les éléments dans des positions symétriques.

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

4. Utilisation de l' API Java 8 Stream

Nous pouvons également inverser un tableau en utilisant 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éthode IntStream.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 de Collections.reverse ()

Voyons comment inverser un tableau à l'aide de la méthode Collections.reverse () :

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

Par rapport aux exemples précédents, c'est une manière plus lisible de faire la tâche.

6. Utilisation d'Apache Commons Lang

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

 org.apache.commons commons-lang3 3.5 

La dernière version de Commons Lang est disponible sur Maven Central.

Utilisons la classe ArrayUtils pour inverser le tableau:

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

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

7. Utilisation de Google Guava

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

 com.google.guava guava 22.0 

La dernière version est disponible sur Maven Central.

Ensuite, nous pouvons utiliser la méthode inverse dans la classe Lists de Guava 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é plusieurs façons différentes d'inverser un tableau en Java. Nous avons montré quelques solutions utilisant uniquement Java de base et deux autres solutions utilisant des bibliothèques tierces - Commons Lang et Guava .

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