Traitement des tableaux avec Apache Commons Lang 3

Traitement de tableaux avec Apache Commons Lang 3

1. Vue d'ensemble

La bibliothèqueApache Commons Lang 3 prend en charge la manipulation des classes principales des API Java. Cette prise en charge inclut des méthodes de traitement des chaînes, des nombres, des dates, de la simultanéité, de la réflexion d’objets, etc.

Dans ce rapide tutoriel, nous allons nous concentrer sur le traitement des tableaux avec la classe utilitaire très utileArrayUtils.

2. Dépendance Maven

Pour utiliser la bibliothèque Commons Lang 3, extrayez-la simplement du référentiel central Maven en utilisant la dépendance suivante:


    org.apache.commons
    commons-lang3
    3.5

Vous pouvez trouver la dernière version de cette bibliothèquehere.

3. ArrayUtils

La classeArrayUtils fournit des méthodes utilitaires pour travailler avec des tableaux. Ces méthodes tentent de gérer l'entrée correctement en empêchant qu'une exception soit levée lorsqu'une valeurnull est transmise.

Cette section illustre certaines méthodes définies dans la classeArrayUtils. Notez que toutes ces méthodes peuvent fonctionner avec n'importe quel type d'élément.

Par commodité, leurs versions surchargées sont également définies pour la gestion des tableaux contenant des types primitifs.

4. add etaddAll

La méthodeadd copie un tableau donné et insère un élément donné à une position donnée dans le nouveau tableau. Si la position n'est pas spécifiée, le nouvel élément est ajouté à la fin du tableau.

Le fragment de code suivant insère le nombre zéro à la première position du tableauoldArray et vérifie le résultat:

int[] oldArray = { 2, 3, 4, 5 };
int[] newArray = ArrayUtils.add(oldArray, 0, 1);
int[] expectedArray = { 1, 2, 3, 4, 5 };

assertArrayEquals(expectedArray, newArray);

Si la position n'est pas spécifiée, l'élément supplémentaire est ajouté à la fin deoldArray:

int[] oldArray = { 2, 3, 4, 5 };
int[] newArray = ArrayUtils.add(oldArray, 1);
int[] expectedArray = { 2, 3, 4, 5, 1 };

assertArrayEquals(expectedArray, newArray);

La méthodeaddAll ajoute tous les éléments à la fin d'un tableau donné. Le fragment suivant illustre cette méthode et confirme le résultat:

int[] oldArray = { 0, 1, 2 };
int[] newArray = ArrayUtils.addAll(oldArray, 3, 4, 5);
int[] expectedArray = { 0, 1, 2, 3, 4, 5 };

assertArrayEquals(expectedArray, newArray);

5. remove etremoveAll

La méthoderemove supprime un élément à une position spécifiée d'un tableau donné. Tous les éléments suivants sont décalés vers la gauche. Notez que cela est vrai pour toutes les opérations de suppression.

Cette méthode retourne un nouveau tableau au lieu d’apporter des modifications à l’original:

int[] oldArray = { 1, 2, 3, 4, 5 };
int[] newArray = ArrayUtils.remove(oldArray, 1);
int[] expectedArray = { 1, 3, 4, 5 };

assertArrayEquals(expectedArray, newArray);

La méthoderemoveAll supprime tous les éléments aux positions spécifiées d'un tableau donné:

int[] oldArray = { 1, 2, 3, 4, 5 };
int[] newArray = ArrayUtils.removeAll(oldArray, 1, 3);
int[] expectedArray = { 1, 3, 5 };

assertArrayEquals(expectedArray, newArray);

6. removeElement etremoveElements

La méthoderemoveElement supprime la première occurrence d'un élément spécifié d'un tableau donné.

Au lieu de lancer une exception, l'opération de suppression est ignorée si un tel élément n'existe pas dans le tableau donné:

int[] oldArray = { 1, 2, 3, 3, 4 };
int[] newArray = ArrayUtils.removeElement(oldArray, 3);
int[] expectedArray = { 1, 2, 3, 4 };

assertArrayEquals(expectedArray, newArray);

La méthoderemoveElements supprime les premières occurrences des éléments spécifiés d'un tableau donné.

Au lieu de lancer une exception, l'opération de suppression est ignorée si un élément spécifié n'existe pas dans le tableau donné:

int[] oldArray = { 1, 2, 3, 3, 4 };
int[] newArray = ArrayUtils.removeElements(oldArray, 2, 3, 5);
int[] expectedArray = { 1, 3, 4 };

assertArrayEquals(expectedArray, newArray);

7. L'APIremoveAllOccurences

La méthoderemoveAllOccurences supprime toutes les occurrences de l'élément spécifié du tableau donné.

Au lieu de lancer une exception, l'opération de suppression est ignorée si un tel élément n'existe pas dans le tableau donné:

int[] oldArray = { 1, 2, 2, 2, 3 };
int[] newArray = ArrayUtils.removeAllOccurences(oldArray, 2);
int[] expectedArray = { 1, 3 };

assertArrayEquals(expectedArray, newArray);

8. L'APIcontains

La méthodecontains vérifie si une valeur existe dans un tableau donné. Voici un exemple de code, incluant la vérification du résultat:

int[] array = { 1, 3, 5, 7, 9 };
boolean evenContained = ArrayUtils.contains(array, 2);
boolean oddContained = ArrayUtils.contains(array, 7);

assertEquals(false, evenContained);
assertEquals(true, oddContained);

9. L'APIreverse

La méthodereverse inverse l'ordre des éléments dans une plage spécifiée d'un tableau donné. Cette méthode modifie le tableau transmis au lieu d'en renvoyer un nouveau.

Jetons un coup d'œil à un rapide:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.reverse(originalArray, 1, 4);
int[] expectedArray = { 1, 4, 3, 2, 5 };

assertArrayEquals(expectedArray, originalArray);

Si aucune plage n'est spécifiée, l'ordre de tous les éléments est inversé:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.reverse(originalArray);
int[] expectedArray = { 5, 4, 3, 2, 1 };

assertArrayEquals(expectedArray, originalArray);

10. L'APIshift

La méthodeshift décale une série d'éléments dans un tableau donné d'un certain nombre de positions. Cette méthode modifie le tableau transmis au lieu d'en renvoyer un nouveau.

Le fragment de code suivant décale tous les éléments entre les éléments d'index 1 (inclus) et d'index 4 (exclusif) d'une position à droite et confirme le résultat:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.shift(originalArray, 1, 4, 1);
int[] expectedArray = { 1, 4, 2, 3, 5 };

assertArrayEquals(expectedArray, originalArray);

Si les limites de la plage ne sont pas spécifiées, tous les éléments du tableau sont décalés:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.shift(originalArray, 1);
int[] expectedArray = { 5, 1, 2, 3, 4 };

assertArrayEquals(expectedArray, originalArray);

11. L'APIsubarray

La méthodesubarray crée un nouveau tableau contenant des éléments dans une plage spécifiée du tableau donné. Voici un exemple d'assertion du résultat:

int[] oldArray = { 1, 2, 3, 4, 5 };
int[] newArray = ArrayUtils.subarray(oldArray, 2, 7);
int[] expectedArray = { 3, 4, 5 };

assertArrayEquals(expectedArray, newArray);

Notez que lorsque l'index transmis est supérieur à la longueur du tableau, il est rétrogradé à la longueur du tableau au lieu que la méthode lève une exception. De même, si un indice négatif est entré, il est promu à zéro.

12. L'APIswap

La méthodeswap permute une série d'éléments à des positions spécifiées dans le tableau donné.

Le fragment de code suivant permute deux groupes d'éléments en commençant par les index 0 et 3, chaque groupe contenant deux éléments:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.swap(originalArray, 0, 3, 2);
int[] expectedArray = { 4, 5, 3, 1, 2 };

assertArrayEquals(expectedArray, originalArray);

Si aucun argument de longueur n'est passé, un seul élément à chaque position est échangé:

int[] originalArray = { 1, 2, 3, 4, 5 };
ArrayUtils.swap(originalArray, 0, 3);
int[] expectedArray = { 4, 2, 3, 1, 5 };
assertArrayEquals(expectedArray, originalArray);

13. Conclusion

Ce didacticiel présente l'utilitaire de traitement des tableaux de base dans Apache Commons Lang 3 -ArrayUtils.

Comme toujours, l'implémentation de tous les exemples et extraits de code donnés ci-dessus peut être trouvée dansthe GitHub project.