多个对象做比较,就要有“比较规则”,然后实现排序。
事实上,java中排序算法的底层也依赖Comparable接口。
Comparable接口中只有一个方法:
public int compareTo(Object obj) obj为要比较的对象
方法中,将当前对象和obj这个对象进行比较,如果大于返回1,等于返回0,小于返回-1. (此处的1也可以是正整数,-1也可以是负整数)。 compareTo方法的代码也比较固定:
package comparable;
import java.util.Arrays;
public class ComparableInterface {
public static void main(String[] args) {
Man[] msMans = {
new Man(5,"ab"),
new Man(5,"abc"),
new Man(5,"a")
};
Arrays.sort(msMans);//对象数组必须是调用了Comparable接口,且实现了compareTo函数
System.out.println(Arrays.toString(msMans)); //调用重写得toString方法
String s1 = "lsmniubi";
String s2 = "l";
String s3 = "lsmniubi123";
//String的原生长度比较
System.out.println(s1.compareTo(s2));
}
}
class Man implements Comparable{
int age;
int id;
String name;
public Man(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return
name + '\''
;
}
//重写方法,写出排序依据按照age升序,age相同按照名字短到长
@Override
public int compareTo(Object o) {
Man man = (Man) o;
if (this.age < man.age) {
return -1;
}
if (this.age > man.age) {
return 1;
}
if(this.age == man.age){
if (this.name.compareTo(man.name) > 0){
return 1;
}
if (this.name.compareTo(man.name) <0){
return -1;
}
}
return 0;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!