首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

java积累(一)------后端---Comparator比较器的用法(1)

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);
返回列表