Queue Interface trong Java có sẵn trong gói java.util và kế thừa từ Collection Interface, được sử dụng để lưu trữ các phần tử được xử lý theo thứ tự FIFO, tức là vào trước ra trước. Trong bài viết này, chúng ta sẽ tìm hiểu về Queue Interface và các phương thức của nó.
Queue Interface
Queue Interface của Collection Framework trong Java cung cấp chức năng của cấu trúc dữ liệu Queue. Nó kế thừa Collection Interface.
Các lớp triển khai Queue
Vì Queue là một Interface, chúng ta không thể cung cấp việc triển khai trực tiếp cho nó. Để sử dụng các phương thức của Queue, chúng ta cần sử dụng các lớp triển khai bao gồm:
- ArrayDeque
- LinkedList
- PriorityQueue
Các Interface kế thừa Queue
Queue Interface cũng được kế thừa bởi các Interface con khác nhau:
- Deque
- BlockingQueue
- BlockingDeque
Cách hoạt động của cấu trúc dữ liệu Queue
Trong Queue (Hàng đợi), các phần tử được lưu trữ và truy cập theo cách First In, First Out. Đó là các phần tử được thêm vào từ phía sau và đi ra khỏi từ phía trước, giống như khi ta thanh toán sản phẩm sau khi mua hàng ở siêu thị, từng người sẽ xếp hàng và ai vào trước sẽ thanh toán trước và đi ra khỏi quầy thanh toán trước.
Làm thế nào để sử dụng Queue?
Trong Java, chúng ta phải thêm gói package java.util.Queue để sử dụng Queue.
Ví dụ:
1 2 3 |
Queue<String> a = new LinkedList<>(); Queue<String> b = new ArrayDeque<>(); Queue<String> c = new PriorityQueue<>(); |
Ở đây, chúng ta đã tạo các đối tượng a,b và c của các lớp LinkedList, ArrayDeque và PriorityQueue tương ứng. Các đối tượng này có thể sử dụng các phương thức của Queue Interface.
Các phương thức của Queue
Queue Interface bao gồm tất cả các phương thức của Collection Interface. Đó là vì Collection là Interface cha của Queue.
Một số phương thức thường được sử dụng của Queue Interface bao gồm:
- Phương thức add(): Chèn phần tử được chỉ định vào Queue. Nếu thành công, add() trả về true, nếu không, nó sẽ đưa ra một ngoại lệ.
- Phương thức offer(): Chèn phần tử được chỉ định vào Queue. Nếu thành công, offer() trả về true, nếu không, nó trả về false.
- Phương thức element(): Trả về phần đầu của Queue. Đưa ra một ngoại lệ nếu Queue là rỗng.
- Phương thức peek(): Trả về phần đầu của Queue. Trả về null nếu Queue trống rỗng.
- Phương thức remove(): Trả về và xóa phần đầu của Queue. Đưa ra một ngoại lệ nếu Queue trống rỗng.
- Phương thức poll(): Trả về và xóa phần đầu của Queue. Trả về null nếu Queue trống.
Triển khai cho Queue Interface
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Queue; import java.util.LinkedList; class Main { public static void main(String[] args) { Queue<Integer> a = new LinkedList<>(); a.offer(43); a.offer(23); a.offer(12); System.out.println(a); int b = a.peek(); System.out.println(b); } } |
Kết quả:
1 2 |
[43, 23, 12] 43 |
Ví dụ 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.Queue; import java.util.PriorityQueue; class Main { public static void main(String[] args) { Queue<String> a = new PriorityQueue<>(); a.offer("Day"); a.offer("la"); a.offer("Java"); System.out.println(a); String b = a.peek(); System.out.println(b); } } |
Kết quả:
1 2 |
[Day, la, Java] Day |
Trong các bài tiếp theo, chúng ta sẽ cùng tìm hiểu về các Interface con khác nhau của Queue Interface và cách triển khai một cách chi tiết.
Trên đây là khái niệm và ví dụ cơ bản về Queue Interface trong Java. Hy vọng mọi người có thể áp dụng vào trong chương trình của mình. Mọi người hãy tiếp tục theo dõi các bài tiếp theo và cập nhật các bài mới nhất trên tek4 nhé!
P/s: Cảm ơn mọi người!