Stack và Queue trong Java

Chào mừng các bạn đã quay trở lại với thachleblog, tiếp tục chuyên mục Java collections. Ở bài trước, mình đã có bài so sánh về ArrayList và LinketList. Bài viết hôm nay mình sẽ tiếp tục chia sẻ về Stack và Queue trong Java. Stack và Queue trong Java được implement như thế nào? Giải quyết vấn đề gì, chúng ta cùng bắt đầu nhé.

Giới thiệu

Stack là kiểu cấu trúc dữ liệu mà các phần từ thêm vào và lấy ra được thực hiện theo cơ chế Last – In – First – Out (LIFO), tức là phần tử nào được thêm vào đầu tiên thì sẽ được lấy ra sau cùng. Ví dụ một cái hộp để đựng đĩa, cái nào được đặt vào đầu tiên sẽ được lấy ra sau cùng. Ở đây cái hộp đựng đĩa được hiểu như là Stack.

Queue là kiểu cấu trúc dữ liệu mà các phần tử thêm vào là lấy ra được thực hiện theo cơ chế Fist – In – First – Out (FIFO), tức là phần tử nào thêm vào đầu tiên sẽ được lấy ra đầu tiên (có vẻ công bằng ^.^). Ví dụ mọi người xếp hàng đợi lên xe bus, người nào đứng trước sẽ được lên xe trước.

Stack và Queue trong Java

Ví dụ minh họa Stack và Queue

Implement

Trong Java, Stack API gồm các method:

Có 2 method đáng chú ý là push() là thêm vào một phần tử và pop() là lấy ra phần tử mà được thêm vào gần nhất.

Queue API gồm các method:

Tương tự Stack, Queue có các method enqueue() là thêm một phần tử vào Queue và dequeue() là lấy ra phần tử mà được thêm vào trước nhất.

Ứng dụng

Việc sử dụng đúng Stack và Queue có thể sẽ giải quyết được các vấn đề phức tạp nếu sử dụng các collection khác. Bởi vì Stack và Queue được tạo ra để giải quyết các vấn đề đó.

Ví dụ Stack, chúng ta cần danh sách những sản phẩm vừa được mua gần nhất hoặc những khách hàng vừa mới truy cập. Sử dụng Stack để lưu trữ các thông tin trên, chỉ cần lấy ra là chúng ta có được kết quả mong muốn.

Queue thì mình sử dụng trong ghi log (tracking data), dữ liệu log sẽ được thêm vào Queue và ghi lần lượt xuống đĩa, đảm bảo dữ liệu log theo thứ tự thời gian…

Kết

Vừa rồi là phần so sánh của mình về Stack và Queue. Hy vọng qua bài viết của mình các bạn có thể hiểu được cơ chế, sử dụng được Stack và Queue trong các dụng cũng như có thể implement Stack và Queue từ các kiểu dữ liệu khác. Hẹn gặp lại các bạn ở các bài viết sau.

Xin cảm ơn!

Tham khảo thêm:

http://introcs.cs.princeton.edu/java/43stack/ 

http://tutorials.jenkov.com/java-collections/stack.html 

http://tutorials.jenkov.com/java-collections/queue.html

 

Tham gia bình luận