Supprimer le premier élément d'un tableau
1. Vue d'ensemble
Dans ce didacticiel,we’ll look at how to remove the first element of an array.
De plus, nous verrons également comment l'utilisation des structures de données desJava Collections Framework rend les choses encore plus faciles.
2. Utilisation deArrays.copyOfRange()
Tout d'abord,removing an element of an array isn’t technically possible in Java. Pour citer lesofficial docs:
“Un tableau est un objet conteneur qui contient un nombre fixe de valeurs d'un seul type. La longueur d'un tableau est établie lors de sa création. Après la création, sa longueur est fixée. ”
Cela signifieas long as we’re working with an array directly, all we can do is create a new array of smaller size, which then doesn’t contain the first element.
Heureusement, le JDK fournit une fonction d'assistance statique pratique que nous pouvons utiliser, appeléeArrays.copyOfRange():
String[] stringArray = {"foo", "bar", "baz"};
String[] modifiedArray = Arrays.copyOfRange(stringArray, 1, stringArray.length);
Notez que cette opération a un coût deO(n) car elle créera un nouveau tableau à chaque fois.
Bien sûr, il s’agit là d’un moyen fastidieux de supprimer un élément du tableau et si vous effectuez de telles opérations régulièrement, il serait peut-être plus judicieux d’utiliser Java Collections Framework à la place.
3. Utilisation d'une implémentationList
Afin de conserver à peu près la même sémantique de la structure de données (une séquence ordonnée d'éléments accessibles par index), il est judicieux d'utiliser une implémentation desList interface.
Les deux implémentations les plus courantes sontArrayList etLinkedList.
Supposons que nous ayons lesLists suivants:
List arrayList = new ArrayList<>();
// populate the ArrayList
List linkedList = new LinkedList<>();
// populate the LinkedList
Puisque les deux classes implémentent la même interface, l'exemple de code permettant de supprimer le premier élément a le même aspect:
arrayList.remove(0);
linkedList.remove(0);
Dans le cas deArrayList, le coût de suppression est deO(n), tandis queLinkedList a un coût deO(1).
Maintenant, cela ne signifie pas que nous devrions utiliser unLinkedList partout par défaut car le coût de récupération d'un objet est l'inverse. Le coût de l'appel deget(i) est deO(1) dans le cas deArrayList et deO(n) dans le cas deLinkedList.
4. Conclusion
We’ve seen how to remove the first element of an array in Java. De plus, nous avons examiné comment obtenir le même résultat en utilisant le Java Collections Framework.
Vous pouvez trouver l'exemple de codeover on GitHub.