想知道是否有办法使用优先级队列来获取带有随机数的Array
,然后根据Biggest到最小或最小到最大的内容删除它们。或者如果它的数字是3。
你会使用比较器吗?
答案 0 :(得分:0)
如何使用标准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());
}
答案 1 :(得分:0)
要添加到xlm的答案,在从随机数组创建优先级队列并想要删除某个元素(例如3)之后,您只需调用remove()
中的PriorityQueue
方法即可类
queue.remove(3);
如果3不是队列中的最大数字,那么这不一定会像poll()
那样从队列头中删除元素。