String类下compareTo()与compare()方法比较

这两个方法经常搞混淆,现对其进行总结以加深记忆。
compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法, 当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的, 必须重写public int compareTo(T o)方法, 比如MapReduce中Map函数和Reduce函数处理的 <key,value>, 其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口, 实现这个接口可同时用于序列化和反序列化。 WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合; 判断字符串大小的依据是根据它们在字典中的顺序决定的。 如果参数字符串等于此字符串,则返回 0 值; 如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值; 如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。 compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法, 它实际上用的是待比较对象的compareTo(Object o)方法。
下面我们写一来看看上面两个方法是怎么用的:
首先,写一个User类,代码如下:
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());
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# String类下compareTo()与compare()对比
# java
# 中compareTo()与compare()比较
# Java中替代equals
# compareTo和toString的方法
# java源码解析之String类的compareTo(String otherString)方法
# Java 基础:string中的compareTo方法
# 序列化
# 的是
# 是怎么
# 这两个
# 对其
# 希望能
# 重写
# 谢谢大家
# 于此
# 用我
# 写好
# 键值
# 实现了
# 看上面
# Map
# Reduce
# public
# int
# MapReduce
# Writable
相关文章:
如何自定义建站之星模板颜色并下载新样式?
教学论文网站制作软件有哪些,写论文用什么软件
?
Python lxml的etree和ElementTree有什么区别
如何快速搭建高效WAP手机网站?
如何在IIS7上新建站点并设置安全权限?
简单实现Android文件上传
建站之星上传入口如何快速找到?
潮流网站制作头像软件下载,适合母子的网名有哪些?
在线教育网站制作平台,山西立德教育官网?
建站之星免费版是否永久可用?
Android使用GridView实现日历的简单功能
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何使用Golang安装API文档生成工具_快速生成接口文档
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何选择高效便捷的WAP商城建站系统?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
建站之星代理商如何保障技术支持与售后服务?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何在西部数码注册域名并快速搭建网站?
活动邀请函制作网站有哪些,活动邀请函文案?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
兔展官网 在线制作,怎样制作微信请帖?
做企业网站制作流程,企业网站制作基本流程有哪些?
官网网站制作腾讯审核要多久,联想路由器newifi官网
网站制作话术技巧,网站推广做的好怎么话术?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
c++ stringstream用法详解_c++字符串与数字转换利器
如何选择高性价比服务器搭建个人网站?
重庆市网站制作公司,重庆招聘网站哪个好?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
,制作一个手机app网站要多少钱?
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何通过商城免费建站系统源码自定义网站主题?
建站之星3.0如何解决常见操作问题?
制作旅游网站html,怎样注册旅游网站?
视频网站制作教程,怎么样制作优酷网的小视频?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何生成腾讯云建站专用兑换码?
,想在网上投简历,哪几个网站比较好?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何快速搭建个人网站并优化SEO?
*请认真填写需求信息,我们会在24小时内与您取得联系。