在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比 如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来 我们要学习一些常见的排序算法。
二、JDK1.8API帮助文档下载在Java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map,Math等等,都是以API的方式提供,这种方式的好处在于一次编写,多处使用。我们借鉴jdk的方式,也把算法封装到某个类中, 那如果是这样,在我们写java代码之前,就需要先进行API的设计,设计好之后,再对这些API进行实现。然后再使用java代码去实现它。以后我们讲任何数据结构与算法都是以这种方式讲解。
链接:https://pan.baidu.com/s/1ICaaJppf4dsZPg4huIxmKw
提取码:ii61
该接口是用来实现对象的排序比较的一个接口,一般自定对象要实现按照一定规则进行排序(比如说要求按照升序或者是降序排列显示),那么可以让需要排序的对象的类去实现Comparable接口,然后重写该接口的一个ComparaTo方法),
其实对于拥有自然排序的数据类型(例如整型),直接比较即可。但是对于没有自然顺序的对象(Student类的对象 stu1和stu2 无法直接比较 他俩大小,需要制定一个规则)需要实现Comparable接口,重写ComparaTo方法
在这里我们以案例的形式对Comparable接口做一个简单的运用。
需求:
- 定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;
- 定义测试类Test,在测试类Test中定义测试方法Comparable getMax(Comparable c1,Comparable c2)完成测试
代码如下(示例):
1.student类
//1.定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则; public class Student implements Comparable{ // 测试类 TestComparable private String username; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "username='" + username + ''' + ", age=" + age + '}'; } @Override public int compareTo(Student o) { //三种方法都可 //return this.age-o.age; return this.getAge()-o.getAge(); // return this.username.compareTo(o.username);//字符串比较 末尾有字符串比较的链接 } }
2.测试类
//2.定义测试类Test,在测试类Test中定义测试方法Comparable getMax(Comparable c1,Comparable c2)完成测试
public class TestComparable {
public static void main(String[] args) {
//创建两个Student对象,并调用getMax方法,完成测试
Student s1 = new Student();
s1.setUsername("A");
s1.setAge(18);
Student s2 = new Student();
s2.setUsername("B");
s2.setAge(20);
Comparable max = getMax(s1, s2);
System.out.println(max);
}
public static Comparable getMax(Comparable c1,Comparable c2){
int result = c1.compareTo(c2);
//如果result<0,则c1比c2小;
//如果result>0,则c1比c2大;
//如果result==0,则c1和c2一样大;
if (result>=0){
return c1;
}else{
return c2;
}
}
}
四、总结ComparableTo( ) 方法比较字符串
对元素进行比较,Java提供了一个接口Comparable就是用来定义排序规则的。



