Video giải thích chi tiết
Giới thiệu về Queue trong lập trình
Ví dụ về QUEUE trong cuộc sống
Xếp hàng làm thủ tục lên máy bay
Xếp hàng mua thức ăn
QUEUE & DQUEUE TRONG LẬP TRÌNH JAVA
Hàng đợi (tiếng anh: Queue) là một cấu trúc dữ liệu dùng để lưu giữ các đối tượng theo cơ chế FIFO (viết tắt từ tiếng Anh: First In First Out), nghĩa là “vào trước ra trước”.
Hàng đợi PriorityQueue là hàng đợi ưu tiên, nó lưu trữ các phần tử theo trật tự tự nhiên của phần tử (nếu các phần tử đó so sánh được với nhau – thi hành Comparable) hoặc một bộ so sánh Comparator được cung cấp cho PriorityQueue.
Deque là "hàng đợi 2 đầu". Với một hàng đợi thông thường, bạn thêm mọi thứ vào một đầu và lấy chúng từ đầu kia. Với hàng đợi kết thúc kép, bạn có thể thêm mọi thứ vào một trong hai đầu và lấy chúng từ một trong hai đầu. Điều đó làm cho nó linh hoạt hơn một chút; ví dụ, bạn có thể sử dụng nó như một ngăn xếp nếu bạn muốn.
Cách làm việc của cấu trúc dữ liệu Queue
LINK: https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html
Một số phương thức thường được sử dụng của Queue interface là:
add() - Chèn phần tử đã chỉ định vào hàng đợi. Nếu tác vụ thành công, add() trả về true, nếu không nó sẽ ném ra một ngoại lệ.
offer() - Chèn phần tử đã chỉ định vào hàng đợi. Nếu tác vụ thành công, offer() trả về true, nếu không nó sẽ trả về false.
element() - Trả về phần đầu của hàng đợi. Ném một ngoại lệ nếu hàng đợi trống.
peek() - Trả về đầu của hàng đợi. Trả về null nếu hàng đợi trống.
remove() - Trả về và xóa phần đầu của hàng đợi. Ném một ngoại lệ nếu hàng đợi trống.
poll() - Trả về và loại bỏ phần đầu của hàng đợi. Trả về null nếu hàng đợi trống.
Cách làm việc của cấu trúc dữ liệu Deque
https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html
Bổ sung các hàm:
Code chi tiết
package main;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
public class ViduPriorityQueue {
public static void main(String[] args) {
Queue<String> danhSachSV = new PriorityQueue<String>();
danhSachSV.offer("TITV 1");
danhSachSV.offer("Nguyen Van B");
danhSachSV.offer("Nguyen Van A");
danhSachSV.offer("TITV 2");
while(true) {
String ten = danhSachSV.poll(); // => lấy ra và xóa
if(ten==null) {
break;
}
//peek => lấy ra nhưng không xóa.
System.out.println(ten);
}
}
}
package main;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
public class ViduDeque {
public static void main(String[] args) {
Deque<String> danhSachSV = new ArrayDeque<String>();
danhSachSV.offer("TITV 1");
danhSachSV.offer("Nguyen Van A");
danhSachSV.offer("Nguyen Van B");
danhSachSV.offer("TITV 2");
danhSachSV.offerLast("TITV 4");
danhSachSV.offerFirst("TITV 0");
// TITV 4 > TITV 2 > Nguyen Van B > Nguyen Van A > TITV 1 > TITV 0
while(true) {
String ten = danhSachSV.poll(); // => lấy ra và xóa
if(ten==null) {
break;
}
//peek => lấy ra nhưng không xóa.
System.out.println(ten);
}
}
}
Không có nhận xét nào:
Đăng nhận xét