From 8f1146fc9469ad3f291ce7f347db2145505f0410 Mon Sep 17 00:00:00 2001 From: Emmanuel SRIVASTAVA TIAMZON Date: Fri, 5 Dec 2025 10:07:07 +0100 Subject: [PATCH] Upload files to "DEV.3.2/cours" Cours listes --- DEV.3.2/cours/3.Listes.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 DEV.3.2/cours/3.Listes.md diff --git a/DEV.3.2/cours/3.Listes.md b/DEV.3.2/cours/3.Listes.md new file mode 100644 index 0000000..20eab12 --- /dev/null +++ b/DEV.3.2/cours/3.Listes.md @@ -0,0 +1,30 @@ + +### Principe +Une liste est une structure de données **abstraites**. +C'est une **collection** d'éléments que l'on a ordonnés. On peut donc les numéroté et en obtenir un indice/rang, le premier élément est l'indice 0. + +Les opérations basiques peuvent être : +* consulter l'élément à un indice donné +* remplacer l'élément à un indice donné +* supprimer l'élément à un indice donné +* insérer un élément à un indice donné + +[!info] Il est difficile d'assurer une performance idéale pour toutes ces opérations à la fois. +Mini conclusion : les listes c'est mauvais on sait pas ce que ça donne et génère souvent une perte de performance. +### En java +L'interface [Collection](https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html) représente les collections en général. Elle hérite de l'interface [Iterable](https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html), ce qui la rend compatible avec les boucles énumératives. L'interface [List](https://docs.oracle.com/javase/8/docs/api/java/util/List.html) hérite de Collection et représente une liste. +Il y a aussi [Iterator](https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html) avec ses méthode : +* boolean hasNext : Returns `true` if the iteration has more elements. +* [E](https://docs.oracle.com/javase/8/docs/api/java/util/List.html "type parameter in List")[remove](https://docs.oracle.com/javase/8/docs/api/java/util/List.html#remove-int-)(int index) Removes the element at the specified position in this list (optional operation). +* [add](https://docs.oracle.com/javase/8/docs/api/java/util/List.html#add-int-E-)(int index, [E](https://docs.oracle.com/javase/8/docs/api/java/util/List.html "type parameter in List") element)Inserts the specified element at the specified position in this list (optional operation). +Parmi les classes qui réalisent List, on note [ArrayList](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) et [LinkedList](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html) + +**Codage** +Pour coder une liste avec un tableau, on fait correspondre les indices du tableau avec les indices de la liste. +Une liste n'a pas de limite avec les indices de la liste. Une liste n'a pas de limite de capacité. On peut seulement réaliser une liste **bornée**, ou prévoir un redimensionnement en cas de besoin. + +Pour coder une liste avec une liste chaînée, on fait correspondre l'ordre des maillons avec l'ordre de la liste. +Les maillons nécessitent une classe séparée, qui contient typiquement des méthodes récursives. Les objets de cette classe ne doivent pas être exposés aux utilisateurs de la liste ! + +Quand on déclare une variable ou un attribut qui va désigner une liste, on utilise le type List et pas le type concret de l'objet. Ceci permet de préserver la capacité à changer la réalisation. +