Các Queue interface của collections framework trong Java cung cấp các chức năng của cấu trúc dữ liệu queue. Nó là một class trong  Collection interface.

1. Các class triển khai Queue

Vì Queue là một interface nên chúng ta không thể triển khai trực tiếp nó được.

Để sử dụng các chức năng của Queue, chúng ta cần sử dụng các class triển khai nó, bao gồm:

•    Class ArrayDeque

•    Class LinkedList

•    Class PriorityQueue

2. Các interface trong Queue

Các Queue interface cũng bao gồm những subinterface khác nhau, đó là:

•    Deque

•    BlockingQueue

•    BlockingDeque

3. Làm việc với cấu trúc dữ liệu queue

Trong queue, 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 trước thì sẽ bị loại bỏ trước.

4. Làm thế nào để sử dụng Queue?

Trong Java, chúng ta phải nhập gói java.util.Queue để sử dụng Queue.


// LinkedList implementation of Queue
Queue<String> animal1 = new LinkedList<>();

// Array implementation of Queue
Queue<String> animal2 = new ArrayDeque<>();

// Priority Queue implementation of Queue
Queue<String> animal 3 = new PriorityQueue<>();

Ở đây, chúng ta đã tạo ra các đối tượng animal1 , animal2 và animal 3 của các class LinkedList, ArrayDeque và PriorityQueue tương ứng. Những đối tượng này có thể sử dụng các chức năng của Queue interface.

5. Các hàm trong queue

Queue interface bao gồm tất cả các hàm của Collection interface. Đó là bởi vì Collection là một interface cha của Queue.

Một số hàm thường được sử dụng trong Queue interface là:

•  add() – Chèn phần tử đã chỉ định vào queue. Nếu thực hiện thành công, hàm add() trả về true, còn không thì nó sẽ ném ra một ngoại lệ (throw an exception).

•  Offer() – Chèn phần tử đã chỉ định vào queue. Nếu thực hiện thành công, hàm offer() trả về true, nếu không nó sẽ trả về false.

•  element() – Trả về phần tử đầu tiên của queue.  Nếu queue trống sẽ ném một ngoại lệ.

•  peek() – Trả về phần tử đầu tiên của queue. Nếu queue trống thì trả về null.

•  remove() – Trả về và xóa phần tử đầu của queue. Nếu queue trống sẽ ném ra một ngoại lệ (throw an exception).

•  poll() – Trả về và loại bỏ phần tử đầu của queue. Nếu queue trống sẽ trả về null.

6. Triển khai queue interface  

6.1 Triển khai class LinkedList

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.Queue;
import java.util.LinkedList;

class Main {

    public static void main(String[] args) {
        // Creating Queue using the LinkedList class
        Queue<Integer> numbers = new LinkedList<>();

        // offer elements to the Queue
        numbers.offer(1);
        numbers.offer(2);
        numbers.offer(3);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        int removedNumber = numbers.poll();
        System.out.println("Removed Element: " + removedNumber);

        System.out.println("Updated Queue: " + numbers);
    }
}

Kết quả

Queue: [1, 2, 3]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 3]

Để tìm hiểu thêm, hãy truy cập Class LinkedList trong Java .

6.2 Triển khai class PriorityQueue

/**
* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
*
* @author cafedevn
* Contact: cafedevn@gmail.com
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.Queue;
import java.util.PriorityQueue;

class Main {

    public static void main(String[] args) {
        // Creating Queue using the PriorityQueue class
        Queue<Integer> numbers = new PriorityQueue<>();

        // offer elements to the Queue
        numbers.offer(5);
        numbers.offer(1);
        numbers.offer(2);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        int removedNumber = numbers.poll();
        System.out.println("Removed Element: " + removedNumber);

        System.out.println("Updated Queue: " + numbers);
    }
}

Kết quả

Queue: [1, 5, 2]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 5]

Để tìm hiểu thêm, hãy truy cập Class PriorityQueue trong Java.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!