我有學生課程。它的主要實例變量是Name,ID,Score。 使用proirityQueue按分數排序學生對象的最佳方法是什麼? 或者我應該說,我聽說一般的PriorityQueue有Key和Value,我希望我的Key是得分。通過java中的priorityqueue對學生的成績排序
0
A
回答
4
要做到這一點,請構建您的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看看。
UPDATE:另一種方式做,這是使你的Student
實施java.lang.Comparable
,埃德加·博達建議。
如果要應用相同的排序規則對所有的學生對象,無論什麼隊列(或列表或點兒排序),他們是在這種方法可能會更方便。但是,如果你想有不同的不同的規則隊列(例如,當您有兩個隊列,一個基於分數,另一個基於名稱)與比較器的方法提供更大的靈活性。
3
您可以讓您的Student
類實現Comparable接口,然後使用PriorityQueue。閱讀javadoc以瞭解如何執行此操作的詳細信息。
相關問題
- 1. 如何根據學生的成績排列一系列學生記錄
- 2. 的PriorityQueue排序
- 3. 放置學生的所有成績1
- 4. 成績較好,排名較低的學生人數
- 5. 學生排名成績關係的PHP代碼
- 6. 對普通學生和非普通學生進行排序
- 7. 找到的10名學生平均成績,並增加學生
- 8. 取得學生姓名和成績並按順序排列的代碼
- 9. 獲得年級對象的學生成績值
- 10. 爲取消學生取得成績
- 11. 作業:類記錄學生成績
- 12. MySQL的 - 學生成績表,通過獎勵等級代替小級
- 13. Java中的PriorityQueue如何對重複條目進行排序?
- 14. 我想要查詢讀學生的學科成績,以紀念
- 15. python的學生平均成績和科目成績平均值計算器
- 16. SQL Server 2008中,選擇學生成績優異的學生,從每一類
- 17. MySQL的通過成績排名的用戶/分
- 18. Java學生和班級名單更新成績
- 19. Java成績簿程序
- 20. SQL - 查找僅喜歡同一年級學生的學生的成績
- 21. 通過排序相似度鏈接學生俱樂部的名單,以學生
- 22. Codeigniter:從三個表生成學生成績單
- 23. 在moodle中查詢學生的分數和成績
- 24. 排序戰績
- 25. 蒙上了特殊的Java對象我創建了一個程序,它helds學生的成績整數
- 26. 如何在java中實現有序但未排序的priorityqueue?
- 27. 通過PriorityQueue迭代不會產生有序的結果
- 28. 排序的學生數組
- 29. 通過Java中的值對自定義對象數組排序
- 30. 通過Java對文本文件排序
Thanx ,,,似乎相似的實現者應該有一個Compareto方法,我的問題是,我不想比較兩個東西,如x,y。我希望實例變量「Score」具有可比性,我會怎麼做? – frequent94
可比性正是你想要的。你想比較你的班級的分數。閱讀javadoc和google,瞭解如何正確實現比較方法的具體示例。 – Blub