当前位置:   article > 正文

优先队列PriorityQueue —— Comparator_priorityqueue comparator

priorityqueue comparator

按照自定义的方式来对队列中的数据进行动态排序,默认最大堆,即队列top为最大的元素。

可以重写PriorityQueue的Comparator进行排序定义。

堆是一颗顺序存储的完全二叉树。、

1.最小堆

每个节点的关键字都不大于起孩子节点的关键字

2.最大堆  (默认)

每个结点的关键字都不小于其孩子结点的关键字

  1. // 优先队列-最小队列,可以不设置队列大小
  2. // peek() 取出最上层元素
  3. // remove() 删除最上层元素
  4. package Queue;
  5. import java.util.*;
  6. public class SeatManager {
  7. private int start;//座位号数
  8. private PriorityQueue<Integer> minheap;
  9. private int[] arr;
  10. public SeatManager(int n) {
  11. this.start=0;
  12. this.minheap = new PriorityQueue<Integer>(new Comparator<Integer>() {
  13. @Override
  14. public int compare(Integer o1, Integer o2) {
  15. return o1 - o2;
  16. }
  17. });
  18. }
  19. public int reserve() {
  20. if (this.minheap.isEmpty()){
  21. this.start=this.start+1;
  22. return this.start;
  23. }else{
  24. int value = this.minheap.peek();
  25. this.minheap.remove();
  26. return value;
  27. }
  28. }
  29. public void unreserve(int seatNumber) {
  30. this.minheap.add(seatNumber);
  31. }
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/355145
推荐阅读
相关标签
  

闽ICP备14008679号