java中compareTo和compare方法之比较

来源:互联网 发布:yyp2p监控软件ios 编辑:程序博客网 时间:2024/05/28 16:15

原文:http://www.cnblogs.com/yueliming/archive/2013/05/22/3092576.html

这两个方法经常搞混淆,现对其进行总结以加深记忆。

1.compareTo(Object o)方法是java.lang.Comparable接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable接口的,必须重写public int compareTo(T o)方法,比如MapReduce中Map函数和Reduce函数处理的 ,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable接口,实现这个接口可同时用于序列化和反序列化。WritableComparable接口(用于序列化和反序列化)是Writable接口和Comparable接口的组合;

2.compare(Object o1,Object o2)方法是java.util.Comparator接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。下面我们写一来看看上面两个方法是怎么用的:

public class User implements Comparable<Object>{    int id;    String name;        public User(int id,String name){        this.id = id;        this.name = name;    }    /*     * Getters and Setters    */    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }           @Override    public int compareTo(Object o) {        if(this ==o){            return 0;                    }        else if (o!=null && o instanceof User) {               User u = (User) o;             if(id<=u.id){                return -1;            }else{            return 1;        }    }else{        return -1;    }}}
测试类Test:

public class Test{    //编写Comparator,根据User的id对User进行排序    private static final Comparator<User> COMPARATOR = new Comparator<User>() {       public int compare(User o1, User o2) {           return o1.compareTo(o2);//运用User类的compareTo方法比较两个对象             }   };        public static void main(String[] args) {        ArrayList<User> student = new ArrayList<User>();        User user1 = new User(1,"yueliming");        User user2 = new User(2,"yueliming");            Collections.sort(student, COMPARATOR);//用我们写好的Comparator对student进行排序        for(int i=0;i<student.size();i++){            System.out.println(student.get(i).getId());        }    }}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被贷款公司骚扰怎么办 趣店账户异常怎么办 指还王要还款下载不了怎么办 随心花账户异常怎么办 账号已被锁定怎么办 哈罗单车被警告怎么办 禁止安装拼多多怎么办 该用户行为异常怎么办 设备被禁止登录怎么办 你的设备被禁封怎么办 监控显示未配置怎么办 监控显示不在线怎么办 兔聊认证不通过怎么办 高考成绩被屏蔽怎么办 百合号码换了怎么办 微粒贷还款限额怎么办 秒白条扣款失败怎么办 信用卡逾期没还怎么办 催收发侮辱短信怎么办? 快贷还清后被拒怎么办 任信用还不起怎么办 信用飞额度抢光怎么办 装修工钱要不回怎么办 装修客户不给钱怎么办 公司赖账不给怎么办 欠钱不还还把我设置黑名单怎么办 别人欠钱留我电话怎么办 微贷审核不通过怎么办 客户赖账不还怎么办 货款拖欠想赖账怎么办 有欠条还赖账怎么办 个人欠货款逃跑怎么办 微信借钱被拉黑怎么办 朋友借钱忘记还怎么办 座机接不到电话怎么办 工地拖欠材料款怎么办 工地不付货款怎么办 生气引起的失眠怎么办 晚上气的睡不着怎么办 半夜气的睡不着怎么办 整晚睡不着觉怎么办