¿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ástrue
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.