DEV Community

Jordy Rodríguez
Jordy Rodríguez

Posted on

getFirst() y getLast(): Extrae elementos de listas en Java

Cuando necesitas sacar el primer o el último elemento de una colección, getFirst() y getLast() te ahorran busquedas de índices y dolores de cabeza.

En mi día a día, trabajo con flujos de procesamiento donde las tareas llegan en orden y ciertas operaciones deben peekear extremos sin desordenarlos. En esas situaciones, tratar la estructura como un Deque (o usar LinkedList) y aprovechar getFirst/getLast te da claridad y menos errores que manipular índices manualmente.

getFirst() y getLast() funcionan como la forma directa de mirar los extremos de una cola o lista tratada como Deque. Para LinkedList, estos métodos están disponibles precisamente para operar al inicio o al final sin complicaciones. Importante: no eliminan el elemento; si quieres quitar, tienes removeFirst/removeLast o sus variantes seguras.

Cosas a tener en cuenta:

  • Si la estructura está vacía, getFirst() y getLast() lanzan NoSuchElementException.
  • Si solo quieres mirar sin posibilidad de excepción, usa peekFirst()/peekLast().
  • Si quieres extraer y eliminar al mismo tiempo, pollFirst()/pollLast() devuelve null cuando está vacía.

Ejemplo práctico (uso limpio en una lista que ya tiene elementos):

import java.util.Deque;
import java.util.LinkedList;

Deque<String> tareas = new LinkedList<>();
tareas.add("Diseñar"); tareas.add("Implementar"); tareas.add("Probar");

if (!tareas.isEmpty()) {
  String primero = tareas.getFirst();
  String ultimo = tareas.getLast();
}
Enter fullscreen mode Exit fullscreen mode

Otra opción útil si solo quieres mirar sin riesgo de excepción:

import java.util.Deque;
import java.util.LinkedList;

Deque<String> tareas = new LinkedList<>();
tareas.add("Diseñar"); tareas.add("Implementar"); tareas.add("Probar");

String primeroPeek = tareas.peekFirst();
String ultimoPeek = tareas.peekLast();
Enter fullscreen mode Exit fullscreen mode

Acción concreta para hacer hoy mismo:
Identifica en tu código una parte donde tomas el primer o último elemento de una Deque/LinkedList y refactorízala usando getFirst/getLast. Añade una comprobación de emptiness o, si solo quieres mirar sin costo, reemplázalo por peekFirst/peekLast. Pon a prueba con un caso vacío para ver que no explota y, si quieres, añade un pequeño test unitario que verifique ese comportamiento.



📬 Conecta Conmigo

Top comments (0)