Trong java.util.P WarriorityQueue, chúng ta có các phương thức add(E e)
và offer(E e)
. Cả hai phương pháp đều được ghi lại là:
Chèn phần tử được chỉ định vào hàng đợi ưu tiên này.
Sự khác biệt giữa hai phương pháp này là gì?
Trong java.util.P WarriorityQueue, chúng ta có các phương thức add(E e)
và offer(E e)
. Cả hai phương pháp đều được ghi lại là:
Chèn phần tử được chỉ định vào hàng đợi ưu tiên này.
Sự khác biệt giữa hai phương pháp này là gì?
Câu trả lời:
Sự khác biệt là offer()
sẽ trả về false
nếu không chèn phần tử vào Hàng đợi bị giới hạn kích thước , trong khi đó add()
sẽ ném một IllegalStateException
.
Bạn nên sử dụng offer()
khi thất bại để chèn một phần tử là bình thường và add()
khi thất bại sẽ là một sự cố đặc biệt (cần phải xử lý).
Để tìm ra sự khác biệt, người ta cần tuân theo các javadocs API PriorityQueue , lần lượt có các phần "Được chỉ định bởi" giới thiệu người đọc đến các phương thức tương ứng trong Queue
giao diện:
Chèn phần tử được chỉ định vào hàng đợi này nếu có thể thực hiện ngay lập tức mà không vi phạm các hạn chế về dung lượng, trả về đúng khi thành công và ném IllegalStateException nếu không có chỗ trống hiện tại ...
Trả về:true
(như được chỉ định bởi Collection.add (E) )
Ném:IllegalStateException
- nếu phần tử không thể được thêm vào lúc này do hạn chế về dung lượng ...
Chèn phần tử được chỉ định vào hàng đợi này nếu có thể thực hiện ngay lập tức mà không vi phạm các hạn chế về dung lượng. Khi sử dụng hàng đợi bị giới hạn dung lượng, phương pháp này thường được ưu tiên thêm (E), có thể không chèn một phần tử chỉ bằng cách ném ngoại lệ ...
Trả về:true
nếu phần tử được thêm vào hàng đợi này, thìfalse
...
Cả hai phương pháp đều có mặt vì những phương thức này được yêu cầu thực hiện bởi giao diện khai báo.
Lưu ý rằng vì PriorityQueue không bị ràng buộc (như đã nêu trong javadocs: " hàng đợi ưu tiên không giới hạn dựa trên một đống ưu tiên ..."), nên không áp dụng tùy chọn của các nhà thiết kế API được trình bày ở trên. Điều này có nghĩa là tùy ý lập trình viên chọn phương thức phù hợp hơn với nhu cầu của họ trong bối cảnh sử dụng cụ thể.