栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构与算法学习三之简单排序(一)Comparable接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构与算法学习三之简单排序(一)Comparable接口

一、简单排序

      在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比 如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来 我们要学习一些常见的排序算法。

       在Java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map,Math等等,都是以API的方式提供,这种方式的好处在于一次编写,多处使用。我们借鉴jdk的方式,也把算法封装到某个类中, 那如果是这样,在我们写java代码之前,就需要先进行API的设计,设计好之后,再对这些API进行实现。然后再使用java代码去实现它。以后我们讲任何数据结构与算法都是以这种方式讲解。

二、JDK1.8API帮助文档下载

链接:https://pan.baidu.com/s/1ICaaJppf4dsZPg4huIxmKw
提取码:ii61

三、Comparable接口介绍

      该接口是用来实现对象的排序比较的一个接口,一般自定对象要实现按照一定规则进行排序(比如说要求按照升序或者是降序排列显示),那么可以让需要排序的对象的类去实现Comparable接口,然后重写该接口的一个ComparaTo方法),
      其实对于拥有自然排序的数据类型(例如整型),直接比较即可。但是对于没有自然顺序的对象(Student类的对象 stu1和stu2 无法直接比较 他俩大小,需要制定一个规则)需要实现Comparable接口,重写ComparaTo方法

在这里我们以案例的形式对Comparable接口做一个简单的运用。
需求:

  1. 定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;
  2. 定义测试类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就是用来定义排序规则的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号