Uso de ListIterator en una LinkedList personalizada
-
24-10-2019 - |
Pregunta
Tengo una lista de enlaces personalizada, genérica y individual que construí yo mismo. Puedo agregar, eliminar, etc. a la lista muy bien. Me gustaría implementar el Java Listiterator en mi clase. ¿Cómo haría para comenzar esto? ¿Qué métodos necesito agregar a mi clase? Todo lo que puedo encontrar en la web son ejemplos de usar el Listiterator en la LinkedList predeterminada de Java, que no es bueno para mí. ¡Gracias!
Solución
Usted crea una segunda clase (generalmente una clase anidada de su lista vinculada) que implementa todas las funciones de la interfaz ListIterator. Tenga en cuenta que algunas funciones (como add
y remove
) son opcionales: solo puedes lanzar una Operación no apoyada. Su clase de lista vinculada necesita implementar los métodos listIterator()
y listIterator(int)
Para devolver una instancia de su segunda clase.
Otros consejos
Debe implementar el Iterador o el Listiterator interfaz.
Busque los métodos que tiene Listiterator. Deberá asegurarse de que su versión tenga esos mismos métodos.
Si puede, busque un Interface
Ese listiterator usa e implementa esa interfaz.
Para el rendimiento, puede implementar ListIterator
Y mantenga una versión "al revés" de su lista mientras itera a través de ella. Esto emularía una lista doblemente vinculada, pero solo para el iterador.
Sin embargo, probablemente sea más seguro implementar su lista vinculada como una lista doblemente vinculada debajo.
Si es una lista vinculada individualmente, implementando ListIterator
Será complicado (si no imposible), ya que necesita navegar en ambas direcciones, que solo puede implementar reiniciando desde la cabeza una y otra vez.
Haga su lista de doble enlace, o tendrá que lanzar UnsupportedOperationException
en muchos métodos. (O vivir con el rendimiento o (n) en la mitad de los métodos)