Метод
peek() используется в двух местах в Java: В
Stream API – для просмотра элементов потока без изменения данных. В
Queue и Stack – для получения элемента без его удаления. 🚩`peek()` в `Stream API` – промежуточная операция
Позволяет "заглянуть" в поток, не изменяя его.
Используется для отладки и логирования.
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = List.of("Alice", "Bob", "Charlie");
names.stream()
.filter(name -> name.startsWith("A"))
.peek(name -> System.out.println("Фильтруем: " + name)) // Логирование
.map(String::toUpperCase)
.forEach(System.out::println);
}
}
Вывод в консоль (показывает, какие элементы проходят
filter()) Фильтруем: Alice
ALICE
🚩`peek()` в `Queue` и `Stack` – просмотр без удаления
Возвращает элемент без его удаления.
В отличие от
poll(), элемент остаётся в очереди Пример с
Queueimport java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
queue.add("One");
queue.add("Two");
queue.add("Three");
System.out.println(queue.peek()); // One (но не удаляется)
System.out.println(queue); // [One, Two, Three]
}
}
Пример с
Stack import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println(stack.peek()); // 30 (последний элемент)
System.out.println(stack); // [10, 20, 30] (всё ещё здесь)
}
}
Ставь 👍 и забирай 📚 Базу знаний