zoukankan      html  css  js  c++  java
  • Comparable接口

     实现了Comparable接口的类在一个Collection(集合)里是可以排序的,而排序的规则是按照你实现的Comparable里的抽象方法compareTo(Object o) 方法来决定的。 
    compareTo方法在Object中并没有被声明,它是java.lang.Compareable接口中唯一的方法。一个类实现了Compareable接口,就表明它的实例具有内在的排序关系(natural ordering)。如果一个数组中的对象实现了Compareable接口,则对这个数组进行排序非常简单:Arrays.sort();对于存储在集合中的Comareable对象,搜索、计算极值以及自动维护工作都非常简单。一旦你的类实现了Compareable接口,它就可以跟许多泛型算法(generic algorithm)以及依赖于该接口的集合的操作实现进行协作,以小的努力得到强大的功能。 
      Java平台库中的所有值类(value classes)都实现了Compareable接口。 


      compareTo的约定是: 
      将当前这个对象与指定的对象进行顺序比较,当该对象小于、等于或大于指定对象时,分别返回一个负整数、0或正整数,如果无法进行比较,则抛出ClassCastException异常。 

    Java代码
    import java.util.*;
    public class EmployeeSortTest {


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Employee[] staff = new Employee[3];
    staff[0] = new Employee("harry Hacker",35000);
    staff[1] = new Employee("carl cracke",75000);
    staff[2] = new Employee("tony Tester",38000);

    Arrays.sort(staff);//sort方法可以实现对对象数组排序,但是必须实现 Comparable接口

    for(Employee e: staff)
    System.out.println("id="+e.getId()+" name="+e.getName()+
    ".salary="+e.getSalary());
    }

    }

    class Employee implements Comparable<Employee>
    {
    public Employee(String n,double s)
    {
    name = n;
    salary = s;
    Random ID = new Random();
    id = ID.nextInt(10000000);
    }
    public int getId()
    {
    return id;
    }
    public String getName()
    {
    return name;
    }

    public double getSalary()
    {
    return salary;
    }

    public void raiseSalary(double byPercent)
    {
    double raise = salary *byPercent/100;
    salary+=raise;
    }

    public int compareTo(Employee other)
    {
    if(id<other.id)//这里比较的是什么 sort方法实现的就是按照此比较的东西从小到大排列
    return -1;
    if(id>other.id)
    return 1;
    return 0;
    }
    private int id;
    private String name;
    private double salary;
    }

     
  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/tomatoxml/p/3622820.html
Copyright © 2011-2022 走看看