你本身这个类调用这个方法需要new对象吧,前一个salary就是他的

解决方案 »

  1. 主动调用该方法的实例化Employee对象就是“前一个”
    传入的实例化Employee对象参数就是“后一个”
      

  2. public int compareTo(Employee other)
    {
    if(salary < other.salary)
    {
    return -1;
    }
    if(salary > other.salary)
    {
    return 1;
    }
    return 0;
    }
    这边的salary其实是隐藏了一个关键字的就是this,其实就是this.salary,this指的是当前调用这个方法的对象,如果要明白如果调用compareTo方法的话,你看下Array.sort的源码吧
      

  3. public int compareTo(Employee other)
            {
                    if(this.salary < other.salary)   
                    {
                            return -1;   
                    }
                    if(this.salary > other.salary)
                    {
                            return 1;   
                    }
                    return 0;
            }
      

  4. public int compareTo(Employee other)
            {
                    if(this.salary < other.salary)   
                    {
                            return -1;   
                    }
                    if(this.salary > other.salary)
                    {
                            return 1;   
                    }
                    return 0;
            }
      

  5. sort方法里面是for循环,你看一下调用就明白了private static void sort1(int x[], int off, int len) {
    // Insertion sort on smallest arrays
    if (len < 7) {
        for (int i=off; i<len+off; i++)
    for (int j=i; j>off && x[j-1]>x[j]; j--)
        swap(x, j, j-1);
        return;
    }是通过前一个和后一个进行比较,而你的实体类里面的coampareTo只是实现两个实体的比较,真正的逻辑在sort里面
      

  6. 楼主想要明白compareTo方法,需要了解的知识有这些:1.Comparable接口
    2.this关键字
    3.compareTo()方法的参数和返回值意义如果搞清楚这三点,你肯定就知道原因了。然后你可以再了解一下Comparator这个类,用它可以实现不同的排序方式。当然,是通过内部类实现的。
      

  7. 意思是说this如果是staff[0],other就是staff[1]吗?
      

  8. 如果仅仅是个int数组排序,像c语言一样,我是明白的,只是这个程序的那块我实现没看出逻辑性,所以有点不明就里。
      

类似问题 »