Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否可以忽略使用「;“可比”; 公共类EmployeeSortest{ 公共静态void main(最终字符串[]args){ 最终员工[]员工=新员工[3]; 员工[0]=新员工(“Harry Hacker”,35000); 员工[1]=新员工(“Carl Cracker”,75000); 员工[2]=新员工(“Tony Tester”,38000); 数组.排序(工作人员); 对于(最终员工e:员工){ System.out.println(“name=“+e.getName()+”,salary=“+e.getSalary()); } } } 类Employee实现了可比较的{ 公共雇员(最后一个字符串n,最后一个双s){ name=n; 工资=s; } 公共字符串getName(){ 返回名称; } 公共双薪制{ 返回工资; } 公共无效率上升幅度(最终加倍百分比){ 最终双倍加薪=工资*百分之一百; 工资+=加薪; } @凌驾 公共内部比较(最终员工其他){ if(工资其他薪资){ 返回1; } 返回0; } 私有最终字符串名; 私人双薪; }_Java_Sorting_Comparison - Fatal编程技术网

Java 我是否可以忽略使用「;“可比”; 公共类EmployeeSortest{ 公共静态void main(最终字符串[]args){ 最终员工[]员工=新员工[3]; 员工[0]=新员工(“Harry Hacker”,35000); 员工[1]=新员工(“Carl Cracker”,75000); 员工[2]=新员工(“Tony Tester”,38000); 数组.排序(工作人员); 对于(最终员工e:员工){ System.out.println(“name=“+e.getName()+”,salary=“+e.getSalary()); } } } 类Employee实现了可比较的{ 公共雇员(最后一个字符串n,最后一个双s){ name=n; 工资=s; } 公共字符串getName(){ 返回名称; } 公共双薪制{ 返回工资; } 公共无效率上升幅度(最终加倍百分比){ 最终双倍加薪=工资*百分之一百; 工资+=加薪; } @凌驾 公共内部比较(最终员工其他){ if(工资其他薪资){ 返回1; } 返回0; } 私有最终字符串名; 私人双薪; }

Java 我是否可以忽略使用「;“可比”; 公共类EmployeeSortest{ 公共静态void main(最终字符串[]args){ 最终员工[]员工=新员工[3]; 员工[0]=新员工(“Harry Hacker”,35000); 员工[1]=新员工(“Carl Cracker”,75000); 员工[2]=新员工(“Tony Tester”,38000); 数组.排序(工作人员); 对于(最终员工e:员工){ System.out.println(“name=“+e.getName()+”,salary=“+e.getSalary()); } } } 类Employee实现了可比较的{ 公共雇员(最后一个字符串n,最后一个双s){ name=n; 工资=s; } 公共字符串getName(){ 返回名称; } 公共双薪制{ 返回工资; } 公共无效率上升幅度(最终加倍百分比){ 最终双倍加薪=工资*百分之一百; 工资+=加薪; } @凌驾 公共内部比较(最终员工其他){ if(工资其他薪资){ 返回1; } 返回0; } 私有最终字符串名; 私人双薪; },java,sorting,comparison,Java,Sorting,Comparison,我是Java的初学者,从Cay S.Horstmann先生和他的同事Core Java第一卷:基础知识所写的书中,我发现了一些我不太理解的东西。 第245页的“employeesorttest.java”示例 我无法得到的是方法compareTo。它如何改变输出?该方法只返回三个数字:0、-1和1。它没有改变staff中的任何位置或对象。另外,如果代码arrays.sort(staff)有效,为什么我们仍然需要使用该接口 我知道这两个代码之间一定有某种关系。可比较的接口只告诉其他代码该元素相对于

我是Java的初学者,从Cay S.Horstmann先生和他的同事Core Java第一卷:基础知识所写的书中,我发现了一些我不太理解的东西。 第245页的“employeesorttest.java”示例

我无法得到的是方法
compareTo
。它如何改变输出?该方法只返回三个数字:0、-1和1。它没有改变
staff
中的任何位置或对象。另外,如果代码
arrays.sort(staff)
有效,为什么我们仍然需要使用该接口


我知道这两个代码之间一定有某种关系。

可比较的接口只告诉其他代码该元素相对于另一个元素的排序位置。这取决于调用代码对该信息进行实际操作

可比数据的用途包括:

有关更多信息,请参阅中的部分。

该接口需要定义
compareTo
方法

根据Java文档

int compareTo(to)

将此对象与订单的指定对象进行比较。当此对象小于、等于或大于指定对象时,返回负整数、零或正整数


如果一个对象实现了
Comparable
,那么像
Arrays.sort(…)
这样的函数就可以使用它
Arrays.sort
不像
Employee
那样查看数组中的对象在您的示例中,它只将其视为
可比较的
对象。它只看到
compareTo
方法,但这就是对它们进行排序所需的全部内容。

这个与java进行比较的示例缺少一些更有意义的内容。我将向您展示的这个方法称为冒泡排序

public class EmployeeSortTest {
    public static void main(final String[] args) {
        final Employee[] staff = new Employee[3];
        staff[0] = new Employee("Harry Hacker", 35000);
        staff[1] = new Employee("Carl Cracker", 75000);
        staff[2] = new Employee("Tony Tester", 38000);
        Arrays.sort(staff);
        for (final Employee e : staff) {
            System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
        }
    }
}

class Employee implements Comparable<Employee> {
    public Employee(final String n, final double s) {
        name = n;
        salary = s;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }

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

    @Override
    public int compareTo(final Employee other) {
        if (salary < other.salary) {
            return -1;
        }

        if (salary > other.salary) {
            return 1;
        }

        return 0;
    }

    private final String name;
    private double salary;
}
//字符串的气泡排序。
类排序字符串{
静态字符串arr[]={
“现在”、“是”、“时间”、“为了”、“所有”、“好”、“男人”,
“到”、“来”、“到”、“帮助”、“他们的”、“国家”
};
公共静态void main(字符串args[]){
对于(int j=0;j
// A bubble sort for Strings. 
class SortString { 
    static String arr[] = { 
    "Now", "is", "the", "time", "for", "all", "good", "men", 
    "to", "come", "to", "the", "aid", "of", "their", "country" 
};

public static void main(String args[]) { 
    for(int j = 0; j < arr.length; j++) { 
        for(int i = j + 1; i < arr.length; i++) { 
          if(arr[i].compareTo(arr[j]) < 0) { 
          String t = arr[j]; 
          arr[j] = arr[i]; 
          arr[i] = t; 
        } 
     } 
    System.out.println(arr[j]); 
   } 
 } 
}