gpt4 book ai didi

java - 在java中按优先级队列对学生的分数进行排序

转载 作者:行者123 更新时间:2023-12-01 07:28:32 25 4
gpt4 key购买 nike

我有学生类。它的主要实例变量是Name、ID、Score。使用 proirityQueue 按分数对学生对象进行排序的最佳方法是什么?或者我应该说,我听说一般的 PriorityQueue 有 Key 和 Value,我希望我的 Key 是 Scores。

最佳答案

为此,请构造您的 ProirityQueue 并将您的 java.util.Comparator 实现传递给它,该实现根据 Student 对象的分数进行比较。

然后使用poll()从队列中查找下一个得分最高/最低的学生(取决于您如何在比较器中定义排序规则)。

你应该得到类似的东西:

Comparator<Student> comparator = new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return (int) (s1.getScore() - s2.getScore());
}
};

Queue<Student> queue = new PriorityQueue<Student>(11, comparator);

// put some students into queue here ...

Student firstInQueue = queue.poll();

看看this tutorial有关如何执行此操作的更详细说明。

更新:执行此操作的另一种方法是让您的Student实现java.lang.Comparable,正如Edgar Boda建议的那样。

如果您想对所有学生对象应用相同的排序规则,无论它们位于哪个队列(或列表或任何可排序的),则此方法可能会更方便。但是,如果您想对不同的队列使用不同的规则(例如,当您有 2 个队列时,一个基于分数,另一个基于名称)使用比较器的方法提供了更大的灵 active 。

关于java - 在java中按优先级队列对学生的分数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com