¿Cómo utilizar la interface “Deque”?
Entrando en el tema de las Interfaces
tenemos una que puede serte de mucha utilidad
en cuanto a Estructuras de Datos se refiere.
Se trata de la Interface "Deque,
la cual sirve para implementar una estructura conocida como Double-ended-queue
que tiene como peculiaridad la posibilidad de
insertar y remover elementos tanto de su inicio como de su final
es decir, puede comportarse como:
-
Una estructura Stack (LIFO)
-
Una estructura Queue (FIFO)
Los métodos que has de implementar si quieres sacar provecho de ésta estructura son:
1. Métodos para Insertar
addFirst(e) -> En éste método debes implementar un comportamiento que
------------------> agregue el elemento especificado** al inicio** de tu Deque
------------------> Lanzará:
------------------> IllegalStateException –si el elemento no puede ser añadido porque impusiste restricciones de capacidad.
------------------> ClassCastException – Si la clase del elemento especificado evita que sea añadido al Deque.
------------------> NullPointerException – Si el elemento es nulo y no se permiten elementos nulos
------------------> IllegalArgumentException –Si** alguna propiedad** del elemento especificado evita que sea agregado al Deque.
.
offerFirst(e) -> Aquí se implementará un comportamiento como el de addFirst(e)
------------------> con la diferencia que regresarás true si el elemento se añadió correctamente y false en cualquier otro caso.
------------------> Solo lanzará las siguientes excepciones:
------------------>ClassCastException, NullPointerException y IllegalArgumentException
.
.
addLast(e) -> Al igual que addFirst(e) pero el elemento se agregará al final del Deque
.
offerLast(e) -> Análogo a offerFirst(e) pero la inserción se realiza al final del Deque.
2. Métodos para Remover
removeFirst() -> Para éste método retornarás el head del Deque y también
------------------>eliminarás éste primer elemento.
------------------> Lanzará NoSuchElementException si el Deque está vacío.
.
pollFirst() -> Elabora el mismo comportamiento que para removeFirst(),
------------------>pero retorna el head del Deque o
------------------>null si el Deque está vacío.
.
.
removeLast() -> Mismo comportamiento que para removeFirst(),
------------------>pero retorna el tail del Deque
.
pollLast() -> También retornarás el tail del Deque y también
------------------>eliminarás éste último elemento.
------------------>pero retorna null si el Deque está vacío.
3. Métodos para Examinar
getFirst() -> Retorna el head pero no lo elimines
------------------> Lanzará NoSuchElementException si el Deque está vacío.
.
peekFirst() -> También retorna el head pero no lo elimines,
------------------> y regresa null si el Deque está vacío.
.
.
getLast() -> Retorna el tail pero no lo elimines
------------------> Lanzará NoSuchElementException si el Deque está vacío.
.
peekLast() -> También retorna el tail pero no lo elimines,
------------------>y regresa null si el Deque está vacío.
La Inteface Deque contiene más métodos que puedes implementar para
ajustar El Double-Ended-Queue a las necesidades de tu proyecto.
Para saber más consulta la documentación en éste enlace o en los tooltips si tu IDE es IntelliJ.
Curso de Java SE Orientado a Objetos




