日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何将对象中的内容按照一定的顺序进行排序

發布時間:2024/7/23 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何将对象中的内容按照一定的顺序进行排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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}

經測試,此方法也是可行的。

總結

以上是生活随笔為你收集整理的如何将对象中的内容按照一定的顺序进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。