对List集合进行排序
首先想要调用Collections.sort(xxList);这个方法排序自己的list集合,你的实体类必须实现comparator接口,实现方式可以使用匿名内部类或者直接实现接口
匿名内部类方式:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中 Student s1 = new Student(); s1.setAge(20); Student s2 = new Student(); s2.setAge(19); Student s3 = new Student(); s3.setAge(21); list.add(s1); list.add(s2); list.add(s3); System.out.println("排序前:"+list); Collections.sort(list, new Comparator<Student>(){ /* * int compare(Student o1, Student o2) 返回一个基本类型的整型, * 返回负数表示:o1 小于o2, * 返回0 表示:o1和o2相等, * 返回正数表示:o1大于o2。 */ public int compare(Student o1, Student o2) { //按照学生的年龄进行升序排列 if(o1.getAge() > o2.getAge()){ return 1; } if(o1.getAge() == o2.getAge()){ return 0; } return -1; } }); System.out.println("排序后:"+list); } }
Student类:
class Student{ private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return getAge()+""; } }
摘自:
https://www.cnblogs.com/wslook/p/9385871.html
这里用的匿名内部类实现Comparator接口,当然也可以在自定义的实体类中实现
参考连接:
https://blog.csdn.net/vincent5869/article/details/80822950
更多学习参考链接:
https://blog.csdn.net/tian_yan71/article/details/122041262?spm=1001.2101.3001.4242.1&utm_relevant_index=3
个人实战案例:
/** * @param sydoneList * 1,优先按照 高电压等级->低电压等级 * 2,电压等级相同时,在按全站-开关-母线--主变--线路--电容器、电抗器--站用变--公用--自定义 的顺序 排序 * */ public List<Sydbone> sortSydboneList(List<Sydbone> sydoneList) { final List<String> dydjOrder = Arrays.asList("500kV", "380kV", "220kV", "110kV", "35kV", "10kV"); final List<String> sbmcOrder = Arrays.asList("全站", "开关", "母线","变压器", "主变", "线路", "电容器", "电抗器", "站用变", "公用", "自定义"); Collections.sort(sydoneList, new Comparator<Sydbone>() { public int compare(Sydbone sydbone1, Sydbone sydbone2) { if(sydbone1.getSbdydj().equals(sydbone2.getSbdydj())){ int io1 = sbmcOrder.indexOf(sydbone1.getSbmc()); int io2 = sbmcOrder.indexOf(sydbone2.getSbmc()); return io2 - io1; }else if(sydbone1.getSbdydj().equals("请选择电压等级")){ return 1; }else{ int io1 = dydjOrder.indexOf(sydbone1.getSbdydj()); int io2 = dydjOrder.indexOf(sydbone2.getSbdydj()); return io1 - io2; } } }); return sydoneList; // List<Sydbone> sydoneListSort = new ArrayList<Sydbone>(); // for (Sydbone sydbone : sydoneList) { // String sbmc = sydbone.getSbmc(); // if (!"自定义".equals(sbmc)) { // sydoneListSort.add(sydbone); // } // } // for (Sydbone sydbone : sydoneList) { // String sbmc = sydbone.getSbmc(); // if ("自定义".equals(sbmc)) { // sydoneListSort.add(sydbone); // } // } // return sydoneListSort; }