Interfejs Queue w Java jest strukturą danych typu FIFO (First-In, First-Out), co oznacza, że elementy są usuwane w kolejności ich dodawania. Aby zarządzać elementami w kolejce, Java oferuje różne metody, wśród których peek(), poll() i remove() są kluczowe do manipulacji i dostępu do elementów. Te metody różnią się zachowaniem w sytuacjach, gdy kolejka jest pusta, a także w swoim przeznaczeniu.
Różnice między metodami
- peek() – Ta metoda zwraca element na początku kolejki bez usuwania go. Jeśli kolejka jest pusta, peek()zwrócinull.
- poll() – Podobnie jak peek(),poll()zwraca pierwszy element kolejki, ale dodatkowo usuwa ten element z kolejki. Gdy kolejka jest pusta, zwracanull.
- remove() – remove()również zwraca pierwszy element kolejki i usuwa go, ale w przeciwieństwie dopoll(), gdy kolejka jest pusta, metoda rzuca wyjątekNoSuchElementException.
Przykład kodu w Java
Załóżmy, że chcemy zaimplementować prosty przykład używając każdej z tych metod, aby zilustrować ich działanie. Użyjemy LinkedList, która implementuje interfejs Queue.
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
    public static void main(String[] args) {
        // Tworzenie kolejki
        Queue<Integer> queue = new LinkedList<>();
        // Dodawanie elementów do kolejki
        queue.offer(10); // Dodaj 10 do kolejki
        queue.offer(20); // Dodaj 20 do kolejki
        // Użycie metody peek()
        // Zwraca pierwszy element bez usuwania
        System.out.println("Element na początku kolejki (peek): " + queue.peek()); // Powinno wydrukować 10
        // Użycie metody poll()
        // Zwraca pierwszy element i usuwa go
        System.out.println("Element usunięty z kolejki (poll): " + queue.poll()); // Powinno wydrukować 10
        // Ponownie użycie peek() po usunięciu elementu
        System.out.println("Nowy początek kolejki (peek po poll): " + queue.peek()); // Powinno wydrukować 20
        // Użycie metody remove()
        // Zwraca pierwszy element i usuwa go
        System.out.println("Element usunięty z kolejki (remove): " + queue.remove()); // Powinno wydrukować 20
        // Spróbuj użyć remove() gdy kolejka jest pusta
        try {
            queue.remove();
        } catch (NoSuchElementException e) {
            System.out.println("Próba usunięcia z pustej kolejki (remove): " + e.getMessage());
        }
    }
}
Komentarze w kodzie wyraźnie wyjaśniają działanie każdej metody. Zwróć uwagę, jak różne zachowania tych metod w sytuacji pustej kolejki wpływają na kontrolę przepływu programu.
Podsumowanie
Metody peek(), poll() i remove() oferują różne sposoby interakcji z kolejką w Java, umożliwiając odpowiedni dobór metody w zależności od potrzeb i oczekiwanej reakcji na pustą kolejkę. Rozumienie ich różnic jest kluczowe dla efektywnego zarządzania kolejkami w aplikacjach Java.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

