Avantage de créer une bibliothèque pour une liste chainée

Résolu/Fermé
membre1990 - 1 févr. 2015 à 11:05
 membre1990 - 1 févr. 2015 à 17:18
Bonjour :),
je suis demandé de créer une bibliothèque java, pour une liste Chaînée, basée sur des classes génériques .
Mais, lorsque j'ai fait une recherche, j'ai trouver qu'après la version 1.5 de java, on a le package java.util qui offre un ensemble d'interfaces permettant de manipuler toute sorte de structure de données de façon générique.

donc, y a t-il avantage de créer et d'utiliser une bibliothèque crée par nous meme au lieu d'utiliser celles existantes???
y a t-il des différences entre la façon dont nous créons une liste, et la façon dont l'API Java collections la fait ??

merciii pour tout aide :)

1 réponse

KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 2 975
1 févr. 2015 à 11:21
Bonjour,

Les classes de listes existaient bien avant la version 1.5 même si elles ont été enrichies au fur et à mesure des évolutions de Java.

Un peu d'historique : dès la version 1.0 tu avais la classe Vector, puis en version 1.2 sont venus s'ajouter les ArrayList, LinkedList, leur interface Collection, et la bibliothèque Collections. En version 1.5 Java s'est doté de type générique <E>, de l'interface Iterable, des boucles for each. Et dernières grande évolution en date, Java 8, qui introduit les lambdas fonctions.

Donc les listes ne sont pas récentes.

L'intérêt de faire une bibliothèque par toi même est de comprendre le mécanisme qu'il peut y avoir derrière. Parce qu'utiliser une classe toute faite c'est une chose, la faire soi même est une tout autre affaire...

Mais hormis l'aspect pédagogique, il peut y avoir un intérêt d'optimisation. Les ArrayList et LinkedList ont des propriétés propres à leur structure (temps d'insertion, taille en mémoire, etc.), ce qui leur confère avantages et inconvénients.
Dans un cas très particulier, on peut vouloir optimiser les performances, en privilégiant une ou plusieurs propriétés critiques, au sacrifice d'une autre moins utilisée.
0
merci KX pour votre réponse :)

""Les ArrayList et LinkedList ont des propriétés propres à leur structure (temps d'insertion, taille en mémoire, etc.), ce qui leur confère avantages et inconvénients. """

s'il vous plait pouvez vous m'informer quels sont les inconvénients, parce que je pense que le but de mon codage est d'offrir une solution pour ses lacunes.

merci d'avance :)
0
ElementW Messages postés 4764 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 298 > membre1990
1 févr. 2015 à 12:43
'lut
ArrayList: taille de N éléments en mémoire, accès à l'élément N en O(1), insertion/suppression en O(N)
LinkedList: taille de N éléments et N pointeurs vers l'élément suivant, accès a l'élément N en O(N), insertion/suppression en O(1) (+O(N) pour itérer jusqu'à l'index voulu puis insérer/supprimer)
0
KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 2 975
Modifié par KX le 1/02/2015 à 12:53
Par exemple, une ArrayList est un tableau en interne, il est rapide d'accéder à un élément ou d'en modifier un, comme pour un tableau. En revanche pour insérer une valeur en plein milieu cela nécessite de déplacer toutes les valeurs qu'il y a après.

Une LinkedList en revanche peut insérer une valeur n'importe où, mais l'accès à un élément nécessite de parcourir tous les éléments qui se trouvent avant, ce qui allonge le temps de parcours.

On utilisera donc les LinkedList si on a besoin de parcourir peu souvent la liste et insérer ou modifier beaucoup de valeurs au milieu.
Mais en général on utilisera plutôt les ArrayList parce qu'ajouter une valeur à la fin est efficace, de même que l'accès à n'importe quelle valeur.
0
ElementW Messages postés 4764 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 298 > KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022
1 févr. 2015 à 12:46
Mais en général on utilisera plutôt les LinkedList parce qu'ajouter une valeur à la fin est efficace, de même que l'accès à n'importe quelle valeur.
Tu voulais pas plutôt dire ArrayList?
0
KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 2 975 > ElementW Messages postés 4764 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021
1 févr. 2015 à 12:52
Si effectivement, je vais corriger ;-)
0