Suppression du premier élément d'un tableau

1. Vue d'ensemble

Dans ce didacticiel, nous verrons comment supprimer le premier élément d'un tableau .

En outre, nous verrons également comment l'utilisation des structures de données de Java Collections Framework facilite encore plus les choses.

2. Utilisation de Arrays.copyOfRange ()

Tout d'abord, la suppression d'un élément d'un tableau n'est pas techniquement possible en Java . Pour citer les documents officiels:

«Un tableau est un objet conteneur qui contient un nombre fixe de valeurs d'un seul type. La longueur d'un tableau est établie lorsque le tableau est créé. Après la création, sa longueur est fixe. »

Cela signifie que tant que nous travaillons directement avec un tableau, tout ce que nous pouvons faire est de créer un nouveau tableau de plus petite taille, qui ne contient pas le premier élément .

Heureusement, le JDK fournit une fonction d'assistance statique pratique que nous pouvons utiliser, appelée Arrays.copyOfRange () :

String[] stringArray = {"foo", "bar", "baz"}; String[] modifiedArray = Arrays.copyOfRange(stringArray, 1, stringArray.length);

Notez que cette opération a un coût de O (n) car elle créera un nouveau tableau à chaque fois.

Bien sûr, il s'agit d'un moyen fastidieux de supprimer un élément du tableau et si vous effectuez de telles opérations régulièrement, il peut être plus judicieux d'utiliser le Java Collections Framework à la place.

3. Utilisation d'une implémentation de liste

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 de l' interface List .

Les deux implémentations les plus courantes sont ArrayList et LinkedList .

Supposons que nous ayons les listes suivantes :

List arrayList = new ArrayList(); // populate the ArrayList List linkedList = new LinkedList(); // populate the LinkedList

Étant donné que les deux classes implémentent la même interface, l'exemple de code pour supprimer le premier élément est identique:

arrayList.remove(0); linkedList.remove(0);

Dans le cas de ArrayList , le coût de suppression est O (n) , tandis que LinkedList a un coût de O (1) .

Maintenant, cela ne signifie pas que nous devrions utiliser une LinkedList partout par défaut car le coût de récupération d'un objet est l'inverse. Le coût de l'appel de get (i) est O (1) dans le cas de ArrayList et O (n) dans le cas de LinkedList .

4. Conclusion

Nous avons vu comment supprimer le premier élément d'un tableau en Java. En outre, nous avons examiné comment obtenir le même résultat à l'aide de Java Collections Framework.

Vous pouvez trouver l'exemple de code sur GitHub.