java - float - tipos de datos primitivos definicion
¿Qué elemento de Java en el ListIterator se considera anterior? (2)
Es más fácil pensar que el cursor está entre dos elementos. Así que al principio, es antes de dog
. Llamar a next()
devuelve dog
, y lo mueve entre dog
y cat
, etc. Ha terminado de iterar cuando el cursor está detrás de la snake
.
Entonces next()
siempre devuelve el valor después del cursor, y mueve el cursor a la posición después de eso. previous()
siempre devuelve el valor antes del cursor y mueve el cursor a la posición anterior.
EDITAR: Como señaló David Conrad en los comentarios: remove()
siempre elimina el último valor devuelto por next()
o previous()
. Esa es probablemente la parte menos obvia, cuando se trata de la forma en que lo he explicado anteriormente ... es mucho más fácil modelar ese comportamiento usando el tipo de cursor "en el elemento" que ha descrito.
Actualmente estoy tratando de aprender cómo implementar mis propios ListIterators. Tengo la mayor parte implementada y lista para funcionar, excepto que estoy confundido por el método anterior (). Según la convención estándar, ¿puedo obtener una explicación de cómo se interpreta usualmente () anteriormente?
es decir:
>cursor<
dog cat fish bird frog snake
De acuerdo con Oracles Java Platform 7 API:
E anterior ()
Devuelve el elemento anterior en la lista y mueve la posición del cursor hacia atrás. Este método se puede invocar repetidamente para iterar a través de la lista hacia atrás o entremezclarse con las llamadas a next () para ir y venir. (Tenga en cuenta que las llamadas alternas a las siguientes y anteriores devolverán el mismo elemento repetidamente).
Lo que no entiendo del todo es si se llama a previous (), devuelve ''fish'' o ''cat''.
Lo entiendo de 2 maneras:
1) ''pez'' era el objeto en el que estabas previamente
2) ''gato'' es el objeto en el índice numéricamente anterior al índice de ''pez''
Si el resultado anterior es "pez", ¿remove () elimina realmente el mismo elemento independientemente de la dirección del recorrido?
ListIterator
es complicado, porque la definición del puntero es un poco diferente.
La documentación de Java 7 dice:
Un ListIterator no tiene un elemento actual; su posición del cursor siempre se encuentra entre el elemento que sería devuelto por una llamada a previous () y el elemento que sería devuelto por una llamada a next ().
Posibles posiciones del cursor son (indicadas por los asteriscos):
* * * * * * *
dog cat fish bird frog snake
La next
función avanza el cursor en una posición y devuelve el elemento entre:
BEFORE:
* * v * * * *
dog cat fish bird frog snake
AFTER:
* * * v * * *
dog cat FISH bird frog snake
RETURNED: fish
La función previous
moverá el cursor hacia atrás y devolverá el elemento entre:
BEFORE:
* * * * * v *
dog cat fish bird frog snake
AFTER:
* * * * v * *
dog cat fish bird FROG snake
RETURNED: frog