import java.util.*;

class Scratch {
  public static void main(String[] args) {

    final Set<Employee> eSet = new TreeSet<>();

    eSet.add(new Employee(1, "john", 20000));
    eSet.add(new Employee(2, "jim", 10000));
    eSet.add(new Employee(9, "mike", 50000));
    eSet.add(new Employee(3, "jack", 30000));
    eSet.add(new Employee(3, "david", 40000));
    eSet.add(new Employee(9, "liam", 80000));
    eSet.add(new Employee(9, "brad", 89000));
    eSet.add(new Employee(3, "jason", 85000));
    eSet.add(new Employee(2, "ted", 35000));

    for(Employee e: eSet) {
      System.out.println(e);
    }
  }
}

class Employee implements Comparable<Employee> {
  int empId;
  String empName;
  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
  public String toString() {
    return empId + " " + empName + " " + salary;
  }

  @Override
  public int compareTo(Employee e) {
    return Integer.compare(empId, e.empId);
  }
}