詳解JAVA使用Comparator接口實(shí)現(xiàn)自定義排序
1、原則
Comparator接口可以實(shí)現(xiàn)自定義排序,實(shí)現(xiàn)Comparator接口時(shí),要重寫compare方法:
int compare(Object o1, Object o2) 返回一個(gè)基本類型的整型
如果要按照升序排序,則o1 小于o2,返回-1(負(fù)數(shù)),相等返回0,01大于02返回1(正數(shù))
如果要按照降序排序,則o1 小于o2,返回1(正數(shù)),相等返回0,01大于02返回-1(負(fù)數(shù))
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class UserComparator implements Comparator < User > { public static void main( String[] args ) { List < User > users = new ArrayList < User >(); users.add( new User( 10, "a" ) ); users.add( new User( 11, "d" ) ); users.add( new User( 15, "s" ) ); users.add( new User( 6, "x" ) ); users.add( new User( 17, "a" ) ); users.add( new User( 17, "b" ) ); users.add( new User( 17, "c" ) ); users.add( new User( 17, "d" ) ); UserComparator comparator = new UserComparator(); users.sort( comparator ); // 也可以使用:Collections.sort( users, comparator ); for ( User u : users ) { System.out.println( u ); } } @Override public int compare( User u1, User u2 ) { if ( u1.equals( u2 ) ) { return 0; } else if ( u1.getAge() < u2.getAge() ) { return 1; } else if ( u1.getAge() == u2.getAge() ) { int f = u1.getName().compareTo( u2.getName() ); if ( f < 0 ) { return -1; } return 0; } else { return -1; } } } class User { private int age; private String name; public User() { } public User( int age, String name ) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge( int age ) { this.age = age; } public String getName() { return name; } public void setName( String name ) { this.name = name; } @Override public String toString() { return "User [age=" + age + ", name=" + name + "]"; } }
User [age=17, name=a] User [age=17, name=b] User [age=17, name=c] User [age=17, name=d] User [age=15, name=s] User [age=11, name=d] User [age=10, name=a] User [age=6, name=x]
以上所述是小編給大家介紹的JAVA使用Comparator接口實(shí)現(xiàn)自定義排序詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
MybatisPlus使用idworker解決雪花算法重復(fù)
本文主要介紹了MybatisPlus使用idworker解決雪花算法重復(fù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02java實(shí)現(xiàn)堆的操作方法(建堆,插入,刪除)
下面小編就為大家分享一篇java實(shí)現(xiàn)堆的操作方法(建堆,插入,刪除),具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12Maven創(chuàng)建項(xiàng)目過慢的4種解決辦法
最近經(jīng)常會(huì)遇到一個(gè)困擾,那就是用idea創(chuàng)建maven項(xiàng)目時(shí),速度很慢,本文就來介紹一下Maven創(chuàng)建項(xiàng)目過慢的4種解決辦法,感興趣的可以了解一下2021-12-12SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析
這篇文章主要為大家介紹了SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04springboot application.yml使用@@pom文件配置問題
這篇文章主要介紹了springboot application.yml使用@@pom文件配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解
下面小編就為大家?guī)硪黄獪\談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02