Tìm hiểu về ngăn xếp stack trong java

1. Khái niệm Stack trong java?
Stack hay còn gọi là ngăn xếp, là cấu trúc dữ liệu cơ bản trong Java hoạt động theo cơ chế LIFO (Last-In-First-Out) hay còn gọi là vào sau ra trước.
Có thể hiểu đơn giản Stack được ví như là một ngăn xếp thẳng đứng.
Ngăn xếp trong java như một chồng sách
Ta xếp các cuốn sách chồng lên nhau, Cuốn a xếp trước sau đó lần lượt cuốn B, C và cuốn D, khi ta lấy ra thì cuốn D sẽ được lấy ra trước vì nằm trên cùng và đây cũng là cơ chế LIFO vào sau ra trước của Stack.
Nói lý thuyết như vậy đủ rồi, giờ mình bắt tay vào tìm hiểu sâu về Stack luôn các bạn nhé.
2. Cú pháp khởi tạo Stack trong java
Cú pháp:
Stack<Object> variable_name = new Stack<Object>();
VD: Stack<String> stack1 = new Stack<String>();
Trong đó Object chính là các đối tượng có thể là các lớp bao Integer, Double,.. hoặc các lớp đối tượng cụ thể như String, SinhVien,…
3. Tìm hiểu về các Phương thức hay sử dụng của Stack trong Java
+  Phương thức empty
Cú pháp:
boolean empty();
Phương thức này sẽ kiểm tra nếu stack trống thì sẽ trả về true, nếu stack không trống sẽ trả về false.
+ Phương thức peek:
Cú pháp:
Object peek();
Trả về phần tử trên cùng của stack, nhưng không loại bỏ nó.
+ Phương thức pop:
Cú pháp:
Object pop();
Trả về phần tử trên cùng của stack đồng thời loại bỏ nó khỏi stack
+ Phương thức push:
Cú pháp:
Object push(Object element);
Phương thức này thêm phần tử vào đầu của stack
+ Phương thức search
Cú pháp:
int search(Object element);
Phương thức này sẽ tìm kiếm phần tử có trong stack, trả về trị ví của phần tử element nằm trong stack tình từ trên xuống. Nếu không tìm thấy sẽ trả về kết quả -1.
4. Sourcecode minh họa về Stack
Ví dụ này mình code trên IDE Eclipse 2021 và JDK 17. Các bạn có thể copy code để chạy cho lẹ nhé.

import java.util.Stack;
public class VDStack {
public static void main(String[] args) {
    Stack<String> stack = new Stack<>();
    System.out.println(stack.empty());
    stack.push(“Java”);
    stack.push(“C#”);
    stack.push(“Python”);
    System.out.println(stack);
    System.out.println(stack.peek());
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack);
    System.out.println(stack.empty());
}
}