Java Comparable接口
精华
小牛编辑
204浏览
2023-03-14
1 什么是Java Comparable接口
Java Comparable接口用于对用户定义的类的对象进行排序。该接口在java.lang包下,仅包含一个名为compareTo(Object) 的方法。它仅提供单个排序序列,意味着,您只能基于单个数据成员对元素进行排序。例如,可以是编号,名称,年龄或其他任何属性。
2 Comparable compareTo方法
public int compareTo(Object obj):用于将当前对象与指定对象进行比较。它返回
- 如果当前对象大于指定对象,则为正整数。
- 如果当前对象小于指定的对象,则为负整数。
- 如果当前对象等于指定的对象,则返回零。
我们可以对以下元素进行排序:
- 字符串对象
- 包装类对象
- 用户自定义对象
3 Java Comparable示例:升序
让我们看一下Comparable接口的示例,该接口根据年龄对列表元素进行排序。
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
import java.util.*;
/**
* Java Comparable接口的例子
*/
class Student implements Comparable<Student>{
int rollno;
String name;
int age;
Student(int rollno,String name,int age){
this.rollno=rollno;
this.name=name;
this.age=age;
}
public int compareTo(Student st){
if(age==st.age)
return 0;
else if(age>st.age)
return 1;
else
return -1;
}
}
public class Demo{
public static void main(String args[]){
ArrayList<Student> al=new ArrayList<Student>();
al.add(new Student(101,"Eric",23));
al.add(new Student(106,"Rose",27));
al.add(new Student(105,"Marl",21));
Collections.sort(al);
for(Student st:al){
System.out.println(st.rollno+" "+st.name+" "+st.age);
}
}
}
输出结果为:
105 Marl 21
101 Eric 23
106 Rose 27
4 Java Comparable示例:倒序
让我们看一下Comparable接口的相同示例,该示例根据年龄以相反的顺序对列表元素进行排序。
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
import java.util.*;
/**
* Java Comparable接口的例子
*/
class Student implements Comparable<Student>{
int rollno;
String name;
int age;
Student(int rollno,String name,int age){
this.rollno=rollno;
this.name=name;
this.age=age;
}
public int compareTo(Student st){
if(age==st.age)
return 0;
else if(age<st.age)
return 1;
else
return -1;
}
}
public class Demo{
public static void main(String args[]){
ArrayList<Student> al=new ArrayList<Student>();
al.add(new Student(101,"Eric",23));
al.add(new Student(106,"Rose",27));
al.add(new Student(105,"Mark",21));
Collections.sort(al);
for(Student st:al){
System.out.println(st.rollno+" "+st.name+" "+st.age);
}
}
}
输出结果为:
106 Rose 27
101 Eric 23
105 Mark 21