Java實(shí)現(xiàn)對(duì)象按照其屬性排序的兩種方法示例
本文實(shí)例講述了Java實(shí)現(xiàn)對(duì)象按照其屬性排序的兩種方法。分享給大家供大家參考,具體如下:
有時(shí)候需要對(duì)對(duì)象列表或數(shù)組進(jìn)行排序,下面提供兩種簡(jiǎn)單方式:
方法一:將要排序的對(duì)象類實(shí)現(xiàn)Comparable<>接口。
首先,創(chuàng)建學(xué)生類,我們將根據(jù)學(xué)生成績(jī)對(duì)學(xué)生進(jìn)行排序:
/*** 學(xué)生類*/class Student implements Comparable<Student>{ String name; int age; int score; public Student(String name, int age,int score) { this.name = name; this.age = age; this.score = score; } @Override public int compareTo(Studento) { // TODO Auto-generated method stub return this.age - o.age; }}
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Student> students = new ArrayList<>(); students.add(new Student('大銘', 19, 89)); students.add(new Student('來(lái)福', 26, 90)); students.add(new Student('倉(cāng)頡', 23, 70)); students.add(new Student('王磊', 18, 80)); System.out.println('排序前:'); for (Student student : students) { System.out.println('姓名:'+student.name+' 年齡:'+student.age+' 成績(jī):'+student.score); } // 排序 Collections.sort(students); System.out.println('排序后:'); for (Student student : students) { System.out.println('姓名:'+student.name+' 年齡:'+student.age+' 成績(jī):'+student.score); } }}
同理,也可以根據(jù)對(duì)象的其他屬性進(jìn)行排序。
方法二:使用Comparator匿名內(nèi)部類實(shí)現(xiàn)。
還是使用同一個(gè)例子,按成績(jī)將學(xué)生排序:
/*** 學(xué)生類*/class Student { String name; int age; int score; public Student(String name, int age,int score) { this.name = name; this.age = age; this.score = score; }}
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Student> students = new ArrayList<>(); students.add(new Student('大銘', 19, 89)); students.add(new Student('來(lái)福', 26, 90)); students.add(new Student('倉(cāng)頡', 23, 70)); students.add(new Student('王磊', 18, 80)); System.out.println('排序前:'); for (Student student : students) { System.out.println('姓名:'+student.name+' 年齡:'+student.age+' 成績(jī):'+student.score); } Collections.sort(students,new Comparator<Student>() { @Override public int compare(Student o1, Student o2) {// TODO Auto-generated method stubreturn o1.age-o2.age; } }); System.out.println('排序后:'); for (Student student : students) { System.out.println('姓名:'+student.name+' 年齡:'+student.age+' 成績(jī):'+student.score); } }}
也可以實(shí)現(xiàn)按對(duì)象屬性將對(duì)象列表排序。
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. 基于javascript處理二進(jìn)制圖片流過(guò)程詳解2. 解決android studio引用遠(yuǎn)程倉(cāng)庫(kù)下載慢(JCenter下載慢)3. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟4. ajax請(qǐng)求添加自定義header參數(shù)代碼5. ASP基礎(chǔ)知識(shí)VBScript基本元素講解6. 使用Python和百度語(yǔ)音識(shí)別生成視頻字幕的實(shí)現(xiàn)7. Kotlin + Flow 實(shí)現(xiàn)Android 應(yīng)用初始化任務(wù)啟動(dòng)庫(kù)8. idea刪除項(xiàng)目的操作方法9. 教你如何寫出可維護(hù)的JS代碼10. 使用python 計(jì)算百分位數(shù)實(shí)現(xiàn)數(shù)據(jù)分箱代碼
