集合List根據多個字段進行排序


 

        最近用java抓取數據的時候,遇到了需要對拿到的List集合按照多個字段進行排序。首先得讓排序的實體類實現Comparable類並且重寫它的compareTo方法,在compareTo中你可以自定義排序的規則。如果前者大於后者,則返回1,若果相等則返回0,若果前者小於后者,則返回-1;String字符串比較的時候也會經常用到這個compareTo方法,查看String類,可以看到它也實現了Comparable類。
String類

 
String類

 

新建一個User類:按照id升序,age降序來排序。

package com.entity; public class User implements Comparable<User>{ private int id; private int age; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } public User(int id, int age, String name) { super(); this.id = id; this.age = age; this.name = name; } @Override public int compareTo(User o) { // TODO Auto-generated method stub if(this.getId()>o.getId()) { return 1; }else if(this.getId()<o.getId()){ return -1; }else{ if(this.getAge()>o.getAge()){ return -1; }else{ return 1; } } } } 

再建一個Junit測試類

package com.test; import java.util.ArrayList; import java.util.Collections; import org.junit.Test; import com.entity.User; public class TestJunit { @Test public void test() { User u1=new User(1, 1, "A"); User u2=new User(3, 2, "B"); User u3=new User(3, 3, "C"); User u4=new User(5, 4, "D"); User u5=new User(5, 5, "E"); ArrayList<User> list=new ArrayList<User>(); list.add(u2); list.add(u5); list.add(u3); list.add(u4); list.add(u1); System.out.println("排序前:"); for(int i=0;i<list.size();i++) { System.out.println("id:"+list.get(i).getId() +" age:"+list.get(i).getAge() +" name:"+list.get(i).getName()); } System.out.println("排序后:"); //id升序,age降序排序 Collections.sort(list); for(int i=0;i<list.size();i++) { System.out.println("id:"+list.get(i).getId() +" age:"+list.get(i).getAge() +" name:"+list.get(i).getName()); } System.out.println(""); } } 

排序結果

 
list排序后


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM