如何将对象中的内容按照一定的顺序进行排序
1、比較comparable和comparator,選擇正確的方法進行排序
Comparable:強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的compareTo方法被稱為它的自然比較方法。只能在類中實現compareTo()一次,不能經常修改類的代碼實現自己想要的排序。實現此接口的對象列表(和數組)可以通過Collections.sort(和Arrays.sort)進行自動排序,對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。
Comparator強行對某個對象進行整體排序。可以將Comparator 傳遞給sort方法(如Collections.sort或 Arrays.sort),從而允許在排序順序上實現精確控制。還可以使用Comparator來控制某些數據結構(如有序set或有序映射)的順序,或者為那些沒有自然順序的對象collection提供排序。
因此,要想對對象中的內容按照一定的順序進行整體排序,應選擇comparator比較器。
2、以學生管理為例,要求按照成績的升序進行排序。
在寫好基本學生類和管理類的基礎上進行添加修改。
首先應該在學生類中實現Comparator比較類,并重寫ComparaTo方法,若按升序排序,結構如下:
public class Student implements Comparable<Student>{
? ? ....
? ? @Override
? ? public int compareTo(Student o) {
? ? ? ? return this.grade-o.grade;//升序
? ? }
}
然后,在測試類方法中,使用collections.sort()或arrays.sort()方法即可進行排序,具體如下:
? ? ? ? ? /*
? ? ? ? ? 讓學生 按照年齡排序 升序
? ? ? ? ?*/
? ? ? ? Collections.sort(list);//要求 該list中元素類型 ?必須實現比較器Comparable接口
list是用來儲存學生信息的。經證明此方法可行。
3、自定義Comparator規則
如果在使用的時候,想要獨立的定義規則去使用,可以采用Collections.sort(List list,Comparetor<T> c)方式,自己定義規則,具體如下:
Collections.sort(list, new Comparator<Student>() {
? ? @Override
? ? public int compare(Student o1, Student o2) {
? ? ? ? return o2.getAge()-o1.getAge();//以學生的年齡降序
? ? }
});
結果如下:
Student{name='rose', age=18}
Student{name='ace', age=17}
Student{name='jack', age=16}
Student{name='abc', age=16}
Student{name='mark', age=16}
經測試,此方法也是可行的。
總結
以上是生活随笔為你收集整理的如何将对象中的内容按照一定的顺序进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window计算的chk在linux下可
- 下一篇: tcl linux 刷 安卓系统,安卓用