Java Stack Class: A Beginner's Guide

Введение

Привет, будущие разработчики Java! Сегодня мы погрузимся в увлекательный мир класса Java Stack. Не волнуйтесь, если вы раньше не писали ни одной строчки кода – я стану вашим дружественным гидом в этом захватывающем путешествии.

Java - Stack Class

Представьте себе, что вы упорядочиваете свои книги. Вы клачете их одну на другую. Последняя книга, которую вы положите, будет первой, которую вы взять, когда её понадобится. Точно так же работает стэк в Java! Это структура данных "Последний-вошедший-первым-вышедший" (LIFO), и она очень полезна в программировании.

Объявление класса

Начнем с основ. В Java класс Stack входит в пакет java.util. Чтобы использовать его, вам нужно импортировать так:

import java.util.Stack;

Класс Stack расширяет класс Vector и реализует интерфейсы такие как List, Collection, Iterable, Cloneable и Serializable. Не волнуйтесь, если эти термины сейчас кажутся вам инопланетными – мы разберем это!

Конструкторы класса

Класс Stack имеет только один конструктор:

Stack<E> stack = new Stack<E>();

Здесь 'E' – это占位符 для типа элементов, которые вы хотите хранить в вашем стэке. Это может быть Integer, String или любой другой объектный тип. Например:

Stack<Integer> numberStack = new Stack<Integer>();
Stack<String> bookStack = new Stack<String>();

В первой строке мы создаем стэк, который будет хранить целые числа. Во второй – стэк для строк, идеально подходящий для нашего аналогии с кучей книг!

Методы класса

Теперь рассмотрим основные методы класса Stack. Вот таблица для удобства:

Метод Описание
push(E item) Добавляет элемент в вершину стэка
pop() Удаляет и возвращает элемент из вершины стэка
peek() Возвращает элемент из вершины, не удаляя его
empty() Проверяет, пуст ли стэк
search(Object o) Ищет объект и возвращает его позицию

Разберем эти методы с примерами:

push(E item)

Stack<String> bookStack = new Stack<String>();
bookStack.push("Java for Beginners");
bookStack.push("Data Structures in Java");

Здесь мы добавляем книги в наш стэк. "Data Structures in Java" теперь находится сверху "Java for Beginners".

pop()

String topBook = bookStack.pop();
System.out.println("Removed book: " + topBook);

Это удаляет "Data Structures in Java" из вершины стэка и возвращает его.

peek()

String nextBook = bookStack.peek();
System.out.println("Next book to read: " + nextBook);

Это告诉我们 верхнюю книгу, не удаляя её – в данном случае, "Java for Beginners".

empty()

if (bookStack.empty()) {
System.out.println("No more books to read!");
} else {
System.out.println("You still have books to read!");
}

Это проверяет, пуст ли наш стэк. Как проверка, закончили ли мы все наши книги!

search(Object o)

int position = bookStack.search("Java for Beginners");
if (position != -1) {
System.out.println("Book found at position: " + position);
} else {
System.out.println("Book not found in the stack.");
}

Это ищет книгу в нашем стэке. Помните, что позиция считается от вершины, и верхний элемент находится на позиции 1.

Наследуемые методы

Класс Stack также наследует методы от своего родительского класса Vector и реализованных интерфейсов. Некоторые полезные наследуемые методы включают:

  • size(): Возвращает количество элементов в стэке
  • contains(Object o): Проверяет, есть ли объект в стэке
  • clear(): Удаляет все элементы из стэка

Пример

Поместим всё вместе с веселым примером. Представьте, что мы отслеживаем наш стэк панкейков!

import java.util.Stack;

public class PancakeStack {
public static void main(String[] args) {
Stack<String> pancakes = new Stack<>();

// Выпечка панкейков
pancakes.push("Plain");
pancakes.push("Blueberry");
pancakes.push("Chocolate Chip");

System.out.println("Pancake stack: " + pancakes);

// Едение верхнего панкейка
String eatenPancake = pancakes.pop();
System.out.println("Yum! Just ate a " + eatenPancake + " pancake.");

// Проверка следующего панкейка
System.out.println("Next pancake is: " + pancakes.peek());

// Добавление больше панкейков
pancakes.push("Banana");

// Проверка размера стэка
System.out.println("Number of pancakes left: " + pancakes.size());

// Поиск панкейка
int position = pancakes.search("Plain");
if (position != -1) {
System.out.println("Plain pancake is " + position + " from the top.");
} else {
System.out.println("No plain pancakes left!");
}
}
}

Вывод

Когда вы выполните этот код, вы увидите что-то вроде этого:

Pancake stack: [Plain, Blueberry, Chocolate Chip]
Yum! Just ate a Chocolate Chip pancake.
Next pancake is: Blueberry
Number of pancakes left: 3
Plain pancake is 3 from the top.

Итак, у вас теперь есть базовые знания о классе Java Stack. Помните, как и с панкейками или книгами, стэк в Java следует принципу "Последний-вошедший-первым-вышедший". Это мощный инструмент, который окажется полезен во многих сценариях программирования.

Постарайтесь, и скоро вы будете уметь управлять данными как профи! Счастливого кодирования, и пусть ваши стэки всегда будут полными вкусных панкейков... Я имел в виду, полными полезных данных!

Credits: Image by storyset