Ordonné : Les éléments conservent leur ordre d'insertion.
Flexible : Permet les doublons, pour que vous puissiez être aussi répétitif que les rappels de votre patron.
Meilleur adapté pour : accès aléatoire et itérations rapides.
Inconvénients : Insertions et suppressions lentes (car les éléments doivent se décaler).
Cas d'utilisation : lorsque vous devez accéder fréquemment à des éléments, comme récupérer des images vidéo dans un lecteur multimédia.
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
Disposition de la mémoire : Les ArrayLists maintiennent un bloc de mémoire contigu, redimensionné de 50 % ou plus lorsqu'il dépasse sa capacité.b. Liste liée
Backed By : Une liste doublement chaînée.
Meilleur adapté pour : insertions et suppressions fréquentes.
Inconvénients : Temps d'accès plus lents en raison de la traversée du pointeur.
Cas d'utilisation : Implémentation d'une playlist où des chansons sont ajoutées ou supprimées souvent.
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
Disposition de la mémoire : Les LinkedLists utilisent une mémoire non contiguë, chaque nœud pointant vers ses nœuds précédent et suivant.c. CopyOnWriteArrayList
Objectif spécial : Variante thread-safe d'ArrayList.
Comment ça marche : Crée une nouvelle copie du tableau sous-jacent à chaque modification.
Meilleur adapté pour : Scénarios dans lesquels les lectures dépassent largement le nombre d'écritures, par exemple, la mise en cache des données fréquemment consultées.
Inconvénients : gourmand en mémoire et lent pour les mises à jour.
d. Vecteur
Héritage : Introduit dans Java 1.0.
Thread-Safety : la surcharge de synchronisation la rend plus lente que les alternatives modernes.
Fun Fact : Comme les « blagues de papa » de List – pas vraiment drôles mais qui traînent toujours.
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
Remarque : Cela renvoie une liste de taille fixe, vous ne pouvez donc pas ajouter ou supprimer d'éléments.
List<String> list = new ArrayList<>();
Immuable signifie pas de add(), remove() ou clear(), comme ce voisin qui ne laisse personne toucher sa pelouse.
List<String> list = Arrays.asList("A", "B", "C");
b. ajouter (index int, élément E)
Insère un élément à l'index spécifié, en décalant les éléments suivants.
List<String> immutableList = List.of("X", "Y", "Z");
c. supprimer (index int)
Supprime l'élément à l'index spécifié.
list.add("Element");
d. obtenir (index int)
Récupère l'élément à l'index spécifié.
list.add(1, "Middle");
e. set(index int, élément E)
Remplace l'élément à la position spécifiée par un nouvel élément.
list.remove(0);
String element = list.get(2);
Une fois redimensionné :
list.set(1, "UpdatedElement");
b. LinkedList Internals Chaque élément (nœud) d'une LinkedList contient :
Données
Pointeur vers le nœud suivant
Pointeur vers le nœud précédent (dans une liste doublement chaînée)
Le parcours est plus lent car l'accès à un index nécessite une itération sur les nœuds.
Schéma :
[Element1] [Element2] [Element3] [Null] ... [Null]
[Element1] [Element2] [Element3] [NewElement] [Null] ... [Null]
Algorithmes de recherche :
Recherche linéaire : O(n) – Scannez chaque élément.
Recherche binaire : O(log n) – Nécessite une liste triée.
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
Autoriser les doublons : Absolument.
Opérations d'accès fréquent : Allez ArrayList.
Modifications fréquentes : Allez LinkedList.
List<String> list = new ArrayList<>();
List<String> list = Arrays.asList("A", "B", "C");
List<String> immutableList = List.of("X", "Y", "Z");
list.add("Element");
Utiliser les génériques : Spécifiez toujours le type pour éviter ClassCastException.
Ne pas utiliser le nouveau ArrayList<>() dans les boucles : réutilisez les instances ou gérez-les correctement pour éviter OutOfMemoryError.
Comprendre List en profondeur vous permet d'écrire des programmes Java efficaces, évolutifs et lisibles. C'est comme maîtriser les bases de la cuisine avant de vous lancer dans des recettes gastronomiques : vous vous épargnerez du code brûlé (et des toasts brûlés). N'hésitez pas à jouer avec les exemples, à créer des scénarios personnalisés et à exploiter la puissance de List. Et rappelez-vous, un développeur chevronné sait que chaque élément compte, tant dans la vie que dans List.
Maintenant, allez-y, surmontez vos défis de codage grâce à votre nouvelle maîtrise des listes, et ne laissez plus jamais vos tableaux vous diriger !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!