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的初学者,从Cay S.Horstmann先生和他的同事Core Java第一卷:基础知识所写的书中,我发现了一些我不太理解的东西。 第245页的“employeesorttest.java”示例 我无法得到的是方法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)有效,为什么我们仍然需要使用该接口 我知道这两个代码之间一定有某种关系。可比较的接口只告诉其他代码该元素相对于
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]);
}
}
}