2011-08-24 3 views
0

J'essaie de comprendre comment les listes liées sont implémentées en Java. Dois-je créer des classes de liste chaînées séparées pour les listes et les nœuds, ou puis-je simplement appeler import java.util.LinkedList, ou avons-nous besoin des deux?Java Linked List Questions

De plus, avons-nous besoin d'un itérateur pour imprimer la liste?

Répondre

4

Vous avez posé plusieurs questions différentes ici. Je pense que je les ai répondu à toutes ici, alors laissez-moi savoir si je l'ai raté quelque chose:

  1. Si votre objectif est d'être un client d'une liste chaînée, alors vous devriez simplement utiliser java.util.LinkedList. Ceci est une implémentation pré-écrite et optimisée d'une liste chaînée qui est bonne pour la plupart des applications.

  2. Si votre objectif est de implémenter une liste liée, alors vous aurez au moins besoin d'avoir une classe représentant un nœud de liste liée. En fonction de votre cas d'utilisation, vous pouvez également envisager de créer une classe qui, comme LinkedList, encapsule la liste et exporte une interface agréable autour de celle-ci pour simplifier les tâches courantes pour les clients. En règle générale, vous le feriez en définissant le type de nœud de liste liée en tant que classe imbriquée dans la liste liée au client.

  3. Vous pouvez avoir un programme qui utilise à la fois une classe de liste liée personnalisée et la collection LinkedList. Un cas d'utilisation pour cela serait d'avoir un programme qui utilise un LinkedList principalement comme une implémentation d'une file d'attente, mais utilise une liste liée personnalisée et exposée pour d'autres tâches où il doit spécifiquement fusionner des listes ou extraire des cellules individuelles de la liste . Par exemple, si vous implémentez un tas Fibonacci, vous implémenterez probablement votre propre liste chaînée même si vous utilisiez LinkedList ailleurs dans le programme. Les deux ne sont pas mutuellement exclusifs.

  4. Je ne suis pas sûr de ce que vous entendez par "itérateur" dans votre dernière question. Si vous souhaitez imprimer le contenu d'une liste liée, la meilleure façon de le faire est de créer une référence à la première cellule de la liste chaînée, puis de continuer à la faire avancer jusqu'à la fin de la liste. Que vous enveloppiez ou non dans un objet java.util.Iterator est à vous. Il est probablement plus facile de créer un type Iterator pour effectuer l'itération, car il vous permet d'interagir avec les boucles foreach et les autres API qui manipulent les collections.

Espérons que cela aide!

+0

Merci. Cela a plus de sens. – jlss4e

+0

@ jlss4e - mais votre question n'est toujours pas :-). Allez-vous le réviser? Ou allez-vous simplement accepter celui-ci? –

+0

Je ne comprends pas le problème avec la question. – jlss4e