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('來福', 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('來福', 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. python 寫一個(gè)文件分發(fā)小程序2. Python本地及虛擬解釋器配置過程解析3. Python importlib模塊重載使用方法詳解4. Vue3中使用this的詳細(xì)教程5. Python 利用flask搭建一個(gè)共享服務(wù)器的步驟6. Python中Anaconda3 安裝gdal庫(kù)的方法7. 用python對(duì)oracle進(jìn)行簡(jiǎn)單性能測(cè)試8. Python自動(dòng)化之定位方法大殺器xpath9. Python類綁定方法及非綁定方法實(shí)例解析10. Python Selenium破解滑塊驗(yàn)證碼最新版(GEETEST95%以上通過率)
