Board logo

标题: java积累(一)------后端---Comparator比较器的用法(1) [打印本页]

作者: look_w    时间: 2019-5-11 13:48     标题: java积累(一)------后端---Comparator比较器的用法(1)

对数组或者List列表,或者Map(非hash)等排序是我们经常使用的一种处理数据的手段。Comparator接口是java中很方便的一个接口。

我们只需要重写compare方法即可实现排序。

int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序
则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)



使用步骤
新建比较器并重写compare方法

        Comparator<User> comp=new Comparator<User>(){
                 //升序
                public int compare(User o1,User o2){
                    if(o1.getAge()>o2.getAge()){
                                         return 1;
                                     }else if(o1.getAge()==o2.getAge()){
                                          return 0;
                                     }else{
                                       return -1;
                                     }                  
                   }
    };

也可以新建内部类或者外部类如下:

    public class UserAgeComparator implements Comparator<User> {  
     
     
             //升序
                public int compare(User o1,User o2){
                    if(o1.getAge()>o2.getAge()){
                                         return 1;
                                     }else if(o1.getAge()==o2.getAge()){
                                          return 0;
                                     }else{
                                       return -1;
                                     }                  
                   }
     
     
    }



使用比较器

        Collections.sort(users,comp);   
                    Collections.reverse(users);//反转排序

如果是类的的话需要先实例化再使用

      UserAgeCompartor mc = new UserAgeCompartor ();
            Collections.sort(list, mc);




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0