代码之家  ›  专栏  ›  技术社区  ›  user3307265

具有整数的优先级队列

  •  0
  • user3307265  · 技术社区  · 11 年前

    想知道是否有方法使用优先级队列来获取 Array 然后根据“从大到小”或“从小到大”之类的内容删除它们。或者它里面有数字3。

    你会用一个比较器,对吗?

    2 回复  |  直到 11 年前
        1
  •  0
  •   xlm santhosh reddy    11 年前

    如何使用标准Java库做到这一点:

        Integer[] ints = new Integer[]{3,2,1};
    
        // For reverse of natural order i.e. largest to smallest
        // If you want the natural order don't use the Collections.reverseOrder() comparator
        Queue<Integer> queue = new PriorityQueue<Integer>(ints.length, Collections.reverseOrder());
        queue.addAll(Arrays.asList(ints));
    
        while (queue.size() > 0) {
            System.out.println(queue.poll());
        }
    
        2
  •  0
  •   tonga    11 年前

    要添加到xlm的答案中,在从随机数组创建优先级队列并希望从中删除某个元素(例如,3)后,只需调用 remove() 中的方法 PriorityQueue

    queue.remove(3);
    

    这不一定会像下面那样从队列头中删除元素 poll() 如果3不是队列中的最大数量,则执行。