2011-07-26 11 views
6

Trong java doc:Làm thế nào implemetion của java.util.queue sử dụng LIFO?

[...] Trong số các trường hợp ngoại lệ là hàng đợi ưu tiên, trong đó đặt hàng các yếu tố theo một so sánh được cung cấp, hoặc đặt hàng tự nhiên yếu tố, và hàng đợi LIFO (hoặc ngăn xếp) mà ra lệnh cho yếu tố LIFO (last-in-đầu-out)

Làm thế nào implemetion của java.util.queue sử dụng LIFO thay vì FIFO?

+0

câu hỏi của bạn là gì? Hàng đợi như một cấu trúc dữ liệu thường là FIFO và Stack như một cấu trúc dữ liệu thường là LIFO. – Marcelo

+0

Bạn có muốn triển khai hàng đợi FIFO bằng cơ sở hạ tầng LIFO không? – user802421

+0

+1 cho câu hỏi. Trong cuốn sách của tôi, tôi đã gặp sau câu trích dẫn khó hiểu: ** Hàng đợi là giao diện cơ sở cho các vùng chứa chứa một chuỗi các phần tử để xử lý . Ví dụ, các lớp thực thi Queue có thể là LIFO (cuối cùng, trước tiên - như trong cấu trúc dữ liệu chồng) hoặc FIFO (đầu tiên trong, đầu tiên ra — như trong dữ liệu hàng đợi cấu trúc). ** – gstackoverflow

Trả lời

4

Stack và LinkedList cung cấp ở đây chỉ là một bộ sưu tập. Hàng đợi không phải là một bộ sưu tập. Nó là một phần của gói đồng thời và có thể được sử dụng với threadpools.

Tôi vừa xác minh lại và đọc javadoc mà bạn đã trích dẫn. Tôi nghĩ rằng tùy chọn duy nhất để sử dụng hàng đợi LIFO là sử dụng hàng đợi ưu tiên với bộ so sánh tùy chỉnh so sánh các phần tử theo thời gian chèn theo thứ tự ngược lại.

+0

mã ví dụ? – celsowm

+0

Tôi không có ví dụ ngay bây giờ. Chỉ cần tìm kiếm các ví dụ về cách sử dụng hàng đợi ưu tiên. Bạn sẽ tìm thấy rất nhiều. Chỉ cần nhớ rằng các đối tượng mà bạn sẽ enqueue phải chứa trường "dấu thời gian" và Comparator mà bạn sẽ thực hiện sẽ sử dụng trường này trong phương thức compareTo() của nó. – AlexR

7

Bạn có thể sử dụng java.util.LinkedList và sử dụng các phương pháp pop()push() và sử dụng nó như một chồng, hàng LIFO.

2

Hàng đợi là cấu trúc dữ liệu sử dụng kỹ thuật First-In-First-Out.

Dưới đây là một liên kết hữu ích: magi.toolkit.util.queue Class LIFOQueue

An thực hiện một "Last In, First Out" Queue. Về cơ bản, một hàng LIFO là một Stack.

+0

Bạn đã chỉnh sửa, và tôi sẽ bỏ phiếu bầu của tôi xuống. – Marcelo

+0

bạn có thể kiểm tra lại liên kết không? Tôi nghĩ ai đó có thể đã mua tên miền. –

2

deque có thể được sử dụng như LIFO hay FIFO

15

Bạn có thể sử dụng bất kỳ deque như một hàng đợi LIFO sử dụng phương pháp Collections.asLifoQueue:

Queue<Integer> arrayLifoQueue = Collections.asLifoQueue(new ArrayDeque<Integer>()); 
Queue<Integer> linkedListLifoQueue = Collections.asLifoQueue(new LinkedList<Integer>()); 
Các vấn đề liên quan