ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

接口之Comparable

2019-11-16 21:02:54  阅读:210  来源: 互联网

标签:salary Comparable name Employee1 double 接口 public String


本节讨论两个问题:

  • 字符串数组的排序
  • 自定义类的排序

1.实现字符串数组的排序

public class TestSort1 {

    public static void main(String[] args) {
        String[] strs=new String[] {"zhangsan","lisi","wangwu","zhaosi"};
        Arrays.sort(strs);
        System.out.print(Arrays.toString(strs));
    }
}
输出结果:按照首字母的字典顺序排序。
[lisi, wangwu, zhangsan, zhaosi

2.实现自定义类的排序

创建自定义类:

public class Employee1{
    private String name;
    private double salary;
    
    public Employee1(String name,Double salary) {
        this.name=name;
        this.salary=salary;
    }
    
    public String getName() {
        return name;
    }
    
    public double getSalary() {
        return salary;
    }
    
    public void raiseSalary(double byPercent){
        double raise=salary*byPercent/100;
        salary+=raise;
    }
    @Override
    public String toString() {
        return "Employee1 [name=" + name + ", salary=" + salary + "]";
    }
}

测试:

public class TestSort {

    public static void main(String[] args) {
        Employee1[] e1=new Employee1[3];
        e1[0]=new Employee1("zhangsan",5000.0);
        e1[1]=new Employee1("lisi",6000.0);
        e1[2]=new Employee1("wangwu",7500.0);
        Arrays.sort(e1);
        System.out.print(Arrays.toString(e1));

    }
}

 这样写完代码,编译器没有报错,但是一运行:

java.lang.ClassCastException

改进操作:

  自定义的类要去implements Comparable接口,并定义接口中的方法

public class Employee1 implements Comparable<Employee1>{ //为泛型Comparable提供参数
    private String name;
    private double salary;
    
    public Employee1(String name,Double salary) {
        this.name=name;
        this.salary=salary;
    }
    
    public String getName() {
        return name;
    }
    
    public double getSalary() {
        return salary;
    }
    
    public void raiseSalary(double byPercent){
        double raise=salary*byPercent/100;
        salary+=raise;
    }

    @Override
    public String toString() {
        return "Employee1 [name=" + name + ", salary=" + salary + "]";
    }

    @Override
    public int compareTo(Employee1 o) {
        return Double.compare(o.salary,salary);
    }
}

 结果:

[Employee1 [name=wangwu, salary=7500.0], Employee1 [name=lisi, salary=6000.0], Employee1 [name=zhangsan, salary=5000.0]] 按照salary从高到低排布。

结论:要想使用Arrays.sort(),定义的类要去implements Comparable接口,实际上String类也都 implements Comparable接口。

标签:salary,Comparable,name,Employee1,double,接口,public,String
来源: https://www.cnblogs.com/liu-chen/p/11873893.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有