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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java中如何对对象排序?

發(fā)布時(shí)間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中如何对对象排序? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,我是雄雄。

前言:

我們知道,在平時(shí)做項(xiàng)目的過(guò)程中,我們總會(huì)用到各種各樣的排序,或是升序,或是降序。在java中,要實(shí)現(xiàn)排序有好多中方式,比如我們耳熟能詳?shù)拿芭菖判颉⑦x擇排序等,但是我們一般都不用寫(xiě),JDK給我們提供了好多現(xiàn)成方法供我們使用,今天我們就來(lái)看看,java中如何使用Comparator進(jìn)行排序。

1

實(shí)現(xiàn)Comparable進(jìn)行排序

下面我們來(lái)看一個(gè)簡(jiǎn)單的例子:

package?org.test;/*** * * 項(xiàng)目名稱(chēng):BianChengXiGuan * 類(lèi)名稱(chēng):Student * 類(lèi)描述:學(xué)生類(lèi) * 創(chuàng)建人:Mu Xiongxiong * 創(chuàng)建時(shí)間:2020-10-19 上午8:47:01 * 修改人:Mu Xiongxiong * 修改時(shí)間:2020-10-19 上午8:47:01 * 修改備注: * 個(gè)人博客:https://blog.csdn.net/qq_34137397 * 微信公眾號(hào):雄雄的小課堂 * @version???? **/ public?class?Student?implements?Comparable<Student>{/*** 學(xué)生編號(hào)*/private?int?sid;/*** 學(xué)生姓名*/private?String name;public?String getName()?{return?name;}public?void?setName(String name)?{this.name = name;}public?int?getSid()?{return?sid;}public?void?setSid(int?sid)?{this.sid = sid;}/*** * 構(gòu)造函數(shù) * @discription?* @author?Mu Xiongxiong * @created?2020-10-19 上午8:47:43 * @param?sid* @param?name * 個(gè)人博客:https://blog.csdn.net/qq_34137397* 微信公眾號(hào):雄雄的小課堂*/public?Student(int?sid, String name)?{super();this.sid = sid;this.name = name;}/*** * 構(gòu)造函數(shù) * @discription?* @author?Mu Xiongxiong * @created?2020-10-19 上午8:47:48 * 個(gè)人博客:https://blog.csdn.net/qq_34137397* 微信公眾號(hào):雄雄的小課堂*/public?Student()?{super();}//接口中必須要實(shí)現(xiàn)的方法//按照sid進(jìn)行排序//如果傳過(guò)來(lái)的sid比本身的sid小的話,返回1,升序//如果傳過(guò)來(lái)的sid比本身的sid大的話,返回-1,降序@Overridepublic?int?compareTo(Student o)?{if(sid>o.sid){return?1;}else?if(sid==o.sid){return?0;}else{return?-1;}}}

這是一個(gè)很簡(jiǎn)單的Student實(shí)體類(lèi),其中對(duì)字段的封裝,以及構(gòu)造方法就不在這里說(shuō)明了。重點(diǎn)看compareTo方法,此方法是Comparable接口中的方法,我們實(shí)現(xiàn)了Comparable接口之后必須要實(shí)現(xiàn)該方法。要實(shí)現(xiàn)升序和降序,肯定少不了比較,那么compareTo方法的作用就在此,用來(lái)比較的!

代碼中,compareTo方法中實(shí)現(xiàn)的是按照sid進(jìn)行排序,如果傳過(guò)來(lái)的sid比本身的sid小的話,返回1,升序。如果傳過(guò)來(lái)的sid比本身的sid大的話,返回-1,降序。然后我們寫(xiě)個(gè)測(cè)試方法進(jìn)行測(cè)試:

//對(duì)集合進(jìn)行排序public?static?void?testSortList(){List<Student> stus = new?ArrayList<Student>();stus.add(new?Student(1,"a"));stus.add(new?Student(4,"d"));stus.add(new?Student(5,"e"));stus.add(new?Student(2,"b"));stus.add(new?Student(3,"c"));System.out.println("排序之前:");for?(Student s : stus) {System.out.println(s.getSid()+"---"+s.getName());}Collections.sort(stus);//Collections.sort(stus,new SortName());System.out.println("排序之后:\n");for?(Student s : stus) {System.out.println(s.getSid()+"---"+s.getName());}}

運(yùn)行結(jié)果如下:

這是升序,如果想要降序排序,簡(jiǎn)單的改一下compareTo方法的比較符號(hào)即可。按照sid進(jìn)行排序,比較簡(jiǎn)單,那假如現(xiàn)在有這樣的需求:按照姓名(字符)順序降序排序,我們應(yīng)該怎么實(shí)現(xiàn)?

2

實(shí)現(xiàn)Comparator進(jìn)行排序

我們看Collections.sort方法,他還有一個(gè)重載方法Collections.sort(Listlists,Comparator c);可以接受一個(gè)Comparator實(shí)現(xiàn)類(lèi),我們就可以利用這一點(diǎn),實(shí)現(xiàn)對(duì)name進(jìn)行排序,代碼如下:

package?org.test;import?java.util.Comparator;public?class?SortName?implements?Comparator<Student> {@Overridepublic?int?compare(Student o,Student o1)?{return?o1.getName().compareTo(o.getName());}}

接著稍微改一下Collections.sort方法,如下:

Collections.sort(stus,new?SortName());

運(yùn)行結(jié)果:

到此,排序完成,最后大家在思考一下,如果name的值為漢字,那么可以按照姓名的首字母倒序排序嗎?

往期精彩

暢想小組KTV點(diǎn)歌系統(tǒng)簡(jiǎn)介

2020-10-19

SQ小組KTV點(diǎn)歌系統(tǒng)簡(jiǎn)介

2020-10-18

凌云KTV點(diǎn)歌系統(tǒng)功能簡(jiǎn)介

2020-10-17

注意!在subList生成子列表之后,一定不要隨便更改原列表

2020-10-15

神奇!一行代碼實(shí)現(xiàn)刪除某集合下標(biāo)20-30的元素

2020-10-14

‘小會(huì)計(jì)’的轉(zhuǎn)行之旅

2020-10-13

子列表只是原列表的一個(gè)視圖

2020-10-12

點(diǎn)分享

點(diǎn)點(diǎn)贊

點(diǎn)在看

總結(jié)

以上是生活随笔為你收集整理的java中如何对对象排序?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。