Bạn đang tìm bất kỳ lớp nào triển khai Queue interface, ngoại trừ PriorityQueue
và PriorityBlockingQueue
, không sử dụng thuật toán FIFO.
Có thể là LinkedList sử dụng add
(thêm một vào cuối) và removeFirst
(xóa một từ phía trước và trả về) là cách dễ nhất để sử dụng.
Ví dụ, đây là một chương trình sử dụng một LinkedList phải xếp hàng và lấy các chữ số của PI:
import java.util.LinkedList;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
LinkedList<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.removeFirst() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.removeFirst());
System.out.println();
}
}
Ngoài ra, nếu bạn biết bạn chỉ muốn đối xử với nó như một hàng đợi (mà không có tính năng bổ sung của một danh sách liên kết), bạn chỉ có thể sử dụng giao diện Queue
bản thân:
import java.util.LinkedList;
import java.util.Queue;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
Queue<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.remove() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.remove());
System.out.println();
}
}
này có lợi thế là một bạn sẽ thay thế lớp bê tông cơ bản với bất kỳ lớp nào cung cấp giao diện Queue
mà không phải thay đổi mã quá nhiều.
Những thay đổi cơ bản là thay đổi kiểu của fifo
đến một Queue
và sử dụng remove()
thay vì removeFirst()
, sau này là không có sẵn cho giao diện Queue
.
Gọi isEmpty()
vẫn ổn vì thuộc về giao diện Collection
trong đó Queue
là một dẫn xuất.
Tại sao không làm cho nămo là loại Queue sau đó? Nhắm mục tiêu giao diện thay vì triển khai cụ thể. –
@ Adam, điểm tốt, tôi đã cung cấp đó như là một thay thế. – paxdiablo
Nếu bạn chỉ muốn lặp lại các mục trong hàng đợi theo cách thức FIFO mà không thực sự loại bỏ các mục, thì bạn có thể làm 'for (Object item: queue)', và nó sẽ lặp lại chúng theo cách FIFO, tại ít nhất trên JDK 7 và với 'ArrayDeQueue' và' LinkedList' impl. –