1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. public class Main {
  4.  
  5.  
  6. public static void main(String[] args)
  7. {
  8.  
  9. ArrayList list = new ArrayList();
  10.  
  11. Employee number1= new Employee("David",20);
  12. Employee number2= new Employee("Michael",10);
  13. Employee number3= new Employee("Bob",15);
  14. Employee number4= new Employee("Tom",12);
  15. Employee number5= new Employee("Carl",16);
  16. list.add(number1);
  17. list.add(number2);
  18. list.add(number3);
  19. list.add(number4);
  20. list.add(number5);
  21. Collections.sort(list);
  22. for (int i = 0; i < list.size(); i++)
  23. {
  24. Employee e = (Employee) list.get(i);
  25. System.out.println(e.toString());
  26. }
  27. }
  28.  
  29. }
  30.  
  31.  
  32. public class Employee
  33. {
  34. // Class constants
  35. static public final int MAX_DAYS = 5;
  36. static public final int MAX_REGULAR_HOURS = MAX_DAYS * 8;
  37.  
  38. // Class variables
  39. static private int numEmployees = 0;
  40.  
  41. // Instance variables
  42. private String name;
  43. private double payRate;
  44.  
  45.  
  46. // Constructor methods
  47.  
  48. // Initialize a new employee's name to the empty string and her
  49. // pay rate and hours worked to 0
  50. public Employee()
  51. {
  52. name = "";
  53. payRate = 0;
  54.  
  55. }
  56.  
  57. // Initialize a new employee's attributes to the given parameters
  58. public Employee(String name, double payRate)
  59. {
  60. this.name = name;
  61. this.payRate = payRate;
  62. numEmployees++;
  63. }
  64.  
  65. // Set an employee's name
  66. public void setName (String name)
  67. {
  68. this.name = name;
  69. }
  70.  
  71. // Get an employee's name
  72. public String getName ()
  73. {
  74. return name;
  75. }
  76.  
  77. // Set an employee's pay rate
  78. public void setPayRate (double newRate)
  79. {
  80. payRate = newRate;
  81. }
  82.  
  83. // Get an employee's pay rate
  84. public double getPayRate ()
  85. {
  86. return payRate;
  87. }
  88.  
  89.  
  90. // Compute and return an employee's weekly pay
  91. public double computePay()
  92. {
  93. return payRate * MAX_REGULAR_HOURS;
  94. }
  95.  
  96.  
  97. static public int getNumEmployees()
  98. {
  99. return numEmployees;
  100. }
  101.  
  102. // Return a string representation of a employee's name, pay rate
  103. // and hours worked.
  104. public String toString()
  105. {
  106. String str = "Name: " + name + "\n" +
  107. "Pay rate: " + payRate + "\n";
  108.  
  109. return str;
  110. }
  111.  
  112. public int compareTo(Object o)
  113. {
  114. Employee employee= (Employee)o;
  115. if(this.getName().compareTo(employee.getName()) > 0)
  116. return 1;
  117. else
  118. if( this.getName().compareTo(employee.getName()) < 0)
  119. return -1;
  120. return 0;
  121. }
  122. }