在Java中我们使用PriorityQueue类时
由于PriorityQueue类中的优先顺序是先提取权值较小的元素
如果我们需要从大到小来排序的话
就可以使用Stack类作为辅助
示例代码:
PriorityQueue<Integer> people = new PriorityQueue<>();
ArrayList<Person> persons = new ArrayList<>();
int size = 0;
int id;
int score;
for(int i=0; i<n; i++) {
id = scanner.nextInt();
score = scanner.nextInt();
people.offer(score);
boolean flag = false;
for(int j=0; j<size; j++) {
if(persons.get(j).score == score) {
persons.get(j).id.offer(id);
flag = true;
break;
}
}
if(!flag) {
Person person2 = new Main().new Person();
person2.score = score;
person2.id.offer(id);
persons.add(person2);
size++;
}
}
Stack<Integer> people2 = new Stack<>();
for(int i=0; i<n; i++) {
people2.push(people.poll());
}