String类下compareTo()与compare()方法比较
发布时间 - 2026-01-11 01:02:12 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
智能起名网站制作软件有哪些,制作logo的软件?
千库网官网入口推荐 千库网设计创意平台入口
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Laravel PHP版本要求一览_Laravel各版本环境要求对照
怎么用AI帮你设计一套个性化的手机App图标?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何用AI帮你把自己的生活经历写成一个有趣的故事?
EditPlus中的正则表达式实战(6)
如何快速选择适合个人网站的云服务器配置?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何做网站制作流程,*游戏网站怎么搭建?
如何用PHP工具快速搭建高效网站?
网站制作免费,什么网站能看正片电影?
音响网站制作视频教程,隆霸音响官方网站?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
zabbix利用python脚本发送报警邮件的方法
三星、SK海力士获美批准:可向中国出口芯片制造设备
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
JavaScript如何实现类型判断_typeof和instanceof有什么区别
如何在香港免费服务器上快速搭建网站?
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
大学网站设计制作软件有哪些,如何将网站制作成自己app?
网页设计与网站制作内容,怎样注册网站?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
想要更高端的建设网站,这些原则一定要坚持!
中国移动官方网站首页入口 中国移动官网网页登录
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Python文件流缓冲机制_IO性能解析【教程】
如何在阿里云香港服务器快速搭建网站?
Laravel怎么实现模型属性的自动加密
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何快速建站并高效导出源代码?

