class Scratch {
public static void main
(String[] args
) { final Employee jim = new Employee(2, "jim", 10_000);
final Employee ted = new Employee(2, "ted", 35_000);
final Employee john = new Employee(9, "john", 20_000);
System.
out.
println("jim compare to ted: " + jim.
compareTo(ted
)); System.
out.
println("john compare to jim: " + john.
compareTo(jim
)); System.
out.
println("john compare to ted: " + john.
compareTo(ted
)); }
}
class Employee implements Comparable<Employee> {
int empId;
double salary;
public Employee
(int empId,
String empName,
double salary
) { this.empId = empId;
this.empName = empName;
this.salary = salary;
}
@Override
public int hashCode() {
return empId;
}
@Override
public boolean equals
(Object o
) { if(this == o) return true;
if(o == null || this.getClass() != o.getClass()) return false;
Employee e = (Employee) o;
return (this.empId == e.empId);
}
@Override
return empId + " " + empName + " " + salary;
}
@Override
public int compareTo(Employee e) {
if(empId == e.empId)
return 0;
if(this.salary < e.salary) {
return -1;
}
else {
return 1;
}
}
}
Y2xhc3MgU2NyYXRjaCB7CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgZmluYWwgRW1wbG95ZWUgamltID0gbmV3IEVtcGxveWVlKDIsICJqaW0iLCAxMF8wMDApOwogICAgZmluYWwgRW1wbG95ZWUgdGVkID0gbmV3IEVtcGxveWVlKDIsICJ0ZWQiLCAzNV8wMDApOwogICAgZmluYWwgRW1wbG95ZWUgam9obiA9IG5ldyBFbXBsb3llZSg5LCAiam9obiIsIDIwXzAwMCk7CgogICAgU3lzdGVtLm91dC5wcmludGxuKCJqaW0gY29tcGFyZSB0byB0ZWQ6ICIgKyBqaW0uY29tcGFyZVRvKHRlZCkpOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJqb2huIGNvbXBhcmUgdG8gamltOiAiICsgam9obi5jb21wYXJlVG8oamltKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oImpvaG4gY29tcGFyZSB0byB0ZWQ6ICIgKyBqb2huLmNvbXBhcmVUbyh0ZWQpKTsKICB9Cn0KCmNsYXNzIEVtcGxveWVlIGltcGxlbWVudHMgQ29tcGFyYWJsZTxFbXBsb3llZT4gewogIGludCBlbXBJZDsKICBTdHJpbmcgZW1wTmFtZTsKICBkb3VibGUgc2FsYXJ5OwoKICBwdWJsaWMgRW1wbG95ZWUoaW50IGVtcElkLCBTdHJpbmcgZW1wTmFtZSwgZG91YmxlIHNhbGFyeSkgewogICAgdGhpcy5lbXBJZCA9IGVtcElkOwogICAgdGhpcy5lbXBOYW1lID0gZW1wTmFtZTsKICAgIHRoaXMuc2FsYXJ5ID0gc2FsYXJ5OwogIH0KCiAgQE92ZXJyaWRlCiAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgIHJldHVybiBlbXBJZDsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgewogICAgaWYodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKICAgIGlmKG8gPT0gbnVsbCB8fCB0aGlzLmdldENsYXNzKCkgIT0gby5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CgogICAgRW1wbG95ZWUgZSA9IChFbXBsb3llZSkgbzsKICAgIHJldHVybiAodGhpcy5lbXBJZCA9PSBlLmVtcElkKTsKICB9CgogIEBPdmVycmlkZQogIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICByZXR1cm4gZW1wSWQgKyAiICIgKyBlbXBOYW1lICsgIiAiICsgc2FsYXJ5OwogIH0KCiAgQE92ZXJyaWRlCiAgcHVibGljIGludCBjb21wYXJlVG8oRW1wbG95ZWUgZSkgewogICAgaWYoZW1wSWQgPT0gZS5lbXBJZCkKICAgICAgcmV0dXJuIDA7CgogICAgaWYodGhpcy5zYWxhcnkgPCBlLnNhbGFyeSkgewogICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgfQp9