用Java集合中的Collections.sort方法如何對(duì)list排序(兩種方法)
第一種是list中的對(duì)象實(shí)現(xiàn)Comparable接口,如下:
/** * 根據(jù)order對(duì)User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } public int compareTo(User arg0) { return this.getOrder().compareTo(arg0.getOrder()); } } </user>
測試一下:
public class Test{ public static void main(String[] args) { User user1 = new User(); user1.setName("a"); user1.setOrder(1); User user2 = new User(); user2.setName("b"); user2.setOrder(2); List <user> list = new ArrayList <user> (); //此處add user2再add user1 list.add(user2); list.add(user1); Collections.sort(list); for(User u : list){ System.out.println(u.getName()); } } } </user> </user>
輸出結(jié)果如下
a
b
第二種方法是根據(jù)Collections.sort重載方法來實(shí)現(xiàn),例如:
/** * 根據(jù)order對(duì)User排序 */ public class User { //此處無需實(shí)現(xiàn)Comparable接口 private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } }
主類中這樣寫即可:
public class Test{ public static void main(String[] args) { User user1 = new User(); user1.setName("a"); user1.setOrder(1); User user2 = new User(); user2.setName("b"); user2.setOrder(2); List <user> list = new ArrayList <user> (); list.add(user2); list.add(user1); Collections.sort(list,new Comparator <user> (){ public int compare(User arg0, User arg1) { return arg0.getOrder().compareTo(arg1.getOrder()); } }); for(User u : list){ System.out.println(u.getName()); } } } </user> </user> </user>
輸出結(jié)果如下
a
b
前者代碼結(jié)構(gòu)簡單,但是只能根據(jù)固定的屬性排序,后者靈活,可以臨時(shí)指定排序項(xiàng),但是代碼不夠簡潔
多字段的場合:
Collections.sort(list,new Comparator <user> (){ public int compare(User arg0, User arg1) { // 第一次比較專業(yè) int i = arg0.getOrder().compareTo(arg1.getOrder()); // 如果專業(yè)相同則進(jìn)行第二次比較 if(i==0){ // 第二次比較 int j=arg0.getXXX().compareTo(arg1.getXXX()); // 如果學(xué)制相同則返回按年齡排序 if(j==0){ return arg0.getCCC().compareTo(arg1.getCCC()); } return j; } return i; } }); </user>
以上內(nèi)容就是小編給大家介紹有關(guān)用Java集合中的Collections.sort方法如何對(duì)list排序(兩種方法),希望對(duì)大家有所幫助。
相關(guān)文章
淺談Spring事務(wù)傳播行為實(shí)戰(zhàn)
這篇文章主要介紹了淺談Spring事務(wù)傳播行為實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)
本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-09-09Java實(shí)現(xiàn)九宮格的簡單實(shí)例
這篇文章主要介紹了 Java實(shí)現(xiàn)九宮格的簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06java實(shí)現(xiàn)socket客戶端連接服務(wù)端
本文是個(gè)人剛剛開始學(xué)習(xí)如何通過socket去發(fā)送信息下邊的案例,也是書上的在這留下筆記,最后附上一個(gè)實(shí)例,有需要的小伙伴可以參考下。2015-10-10