对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);
    }
}
View Code

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()+"";
    }
}
View Code

摘自:

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;
    }
View Code

 

posted @ 2020-12-17 17:20  爱跳舞的程序员  阅读(520)  评论(0编辑  收藏  举报