Advertisement
Guest User

Untitled

a guest
Oct 28th, 2017
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. package a04CompanyRoster;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.ArrayList;
  7. import java.util.LinkedHashMap;
  8. import java.util.List;
  9. import java.util.stream.Collectors;
  10.  
  11. class CompanyRoster {
  12. public static void main(String[] args) throws IOException{
  13. BufferedReader Console = new BufferedReader(new InputStreamReader(System.in));
  14. LinkedHashMap<String, Department> departments = new LinkedHashMap<>();
  15. int n = Integer.parseInt(Console.readLine());
  16.  
  17. for (int i = 0; i < n; i++) {
  18. String[] params = Console.readLine().split("\\s+");
  19. Employee employee = new Employee(params[0], Double.parseDouble(params[1]), params[2]);
  20. if(params.length == 5){
  21. try {
  22. int age = Integer.parseInt(params[4]);
  23. employee.setAge(age);
  24. }
  25. catch (Exception e){employee.setEmail(params[4]);}
  26. }
  27. else if (params.length > 5) {
  28. employee.setEmail(params[4]);
  29. employee.setAge(Integer.parseInt(params[5]));
  30. }
  31.  
  32.  
  33. if(!departments.containsKey(params[3]))
  34. departments.put(params[3], new Department(params[3]));
  35.  
  36. departments.get(params[3]).addEmployee(employee);
  37. }
  38.  
  39. List<Department> sortedJobs = departments.values().stream().sorted(((o1, o2) -> Double.compare(o2.getAverage(), o1.getAverage()))).collect(Collectors.toList());
  40. Department bestJob = sortedJobs.get(0);
  41. System.out.println(String.format("Highest Average Salary: %s", bestJob.getName()));
  42.  
  43. List<Employee> sortedEmployees = bestJob.getEmployees().stream().sorted(((o1, o2) -> Double.compare(o2.getSalary(), o1.getSalary()))).collect(Collectors.toList());
  44.  
  45. for(Employee e : sortedEmployees)
  46. System.out.println(String.format("%s %.2f %s %d", e.getName(), e.getSalary(), e.getEmail(), e.getAge()));
  47.  
  48. }
  49. }
  50.  
  51. class Department{
  52. private String name;
  53. private List<Employee> employees;
  54.  
  55. public Department(){
  56. this.employees = new ArrayList<>();
  57. }
  58.  
  59. public Department(String name){
  60. this();
  61. this.name = name;
  62. }
  63.  
  64. public String getName() {
  65. return name;
  66. }
  67.  
  68. public void setName(String name) {
  69. this.name = name;
  70. }
  71.  
  72. public List<Employee> getEmployees() {
  73. return employees;
  74. }
  75.  
  76. public void setEmployees(List<Employee> employees) {
  77. this.employees = employees;
  78. }
  79.  
  80. public void addEmployee(Employee e){
  81. this.employees.add(e);
  82. }
  83.  
  84. public double getAverage(){
  85. double res = 0.0;
  86. for(Employee e : this.employees)
  87. res += e.getSalary();
  88. return res / this.employees.size();
  89. }
  90. }
  91.  
  92. class Employee{
  93. private String name;
  94. private double salary;
  95. private String position;
  96.  
  97. private String email = "n/a";
  98. private int age = -1;
  99.  
  100. public Employee(String name, double salary, String position) {
  101. this.name = name;
  102. this.salary = salary;
  103. this.position = position;
  104. }
  105.  
  106. public String getName() {
  107. return name;
  108. }
  109.  
  110. public void setName(String name) {
  111. this.name = name;
  112. }
  113.  
  114. public double getSalary() {
  115. return salary;
  116. }
  117.  
  118. public void setSalary(double salary) {
  119. this.salary = salary;
  120. }
  121.  
  122. public String getPosition() {
  123. return position;
  124. }
  125.  
  126. public void setPosition(String position) {
  127. this.position = position;
  128. }
  129.  
  130. public String getEmail() {
  131. return email;
  132. }
  133.  
  134. public void setEmail(String email) {
  135. this.email = email;
  136. }
  137.  
  138. public int getAge() {
  139. return age;
  140. }
  141.  
  142. public void setAge(int age) {
  143. this.age = age;
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement