Advertisement
Guest User

1. Company Roster - More Exercise: Objects and Classes

a guest
Jul 30th, 2019
1,313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.51 KB | None | 0 0
  1.  
  2. import java.io.IOException;
  3. import java.lang.reflect.Array;
  4. import java.text.DecimalFormat;
  5. import java.util.*;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. import java.util.stream.Collectors;
  9.  
  10. public class test {
  11.  
  12.  
  13.     public static void main(String[] args) throws IOException {
  14.  
  15.         Scanner scanner = new Scanner(System.in);
  16.  
  17.         int lines = Integer.parseInt(scanner.nextLine());
  18.  
  19.         Map<String, List<Employee>> departments = new HashMap<>();
  20.  
  21.         while (lines-- > 0) {
  22.  
  23.             String input = scanner.nextLine();
  24.  
  25.             List<String> data = Arrays.stream(input.split(" ")).collect(Collectors.toList());
  26.  
  27.             String name = data.get(0);
  28.             double salary = Double.parseDouble(data.get(1));
  29.             String position = data.get(2);
  30.             String department = data.get(3);
  31.  
  32.             Employee employee = new Employee(name, salary, position, department);
  33.  
  34.             if (data.size() == 5) {
  35.                 if (input.contains("@")) {
  36.                     employee.email = data.get(4);
  37.                 } else {
  38.                     employee.setAge(Integer.parseInt(data.get(4)));
  39.                 }
  40.             } else if (data.size() == 6) {
  41.                 employee.setEmail(data.get(4));
  42.                 employee.setAge(Integer.parseInt(data.get(5)));
  43.  
  44.             }
  45.             if (!departments.containsKey(department)) {
  46.                 departments.put(department, new ArrayList<>());
  47.                 departments.get(department).add(employee);
  48.             } else {
  49.                 departments.get(department).add(employee);
  50.             }
  51.         }
  52.  
  53.         departments.entrySet().stream().sorted((a, b) -> {
  54.             double avrFirst = a.getValue().stream().mapToDouble(Employee::getSalary).average().orElse(Double.NaN);
  55.             double avrSecond = b.getValue().stream().mapToDouble(Employee::getSalary).average().orElse(Double.NaN);
  56.             return Double.compare(avrSecond, avrFirst);
  57.            
  58.         }).limit(1).forEach(e -> {
  59.             System.out.println(String.format("Highest Average Salary: %s", e.getKey()));
  60.             e.getValue().stream().sorted((a,b) -> Double.compare(b.getSalary(), a.getSalary())).forEach(o -> System.out.println(String.format("%s %.2f %s %d", o.getName(), o.getSalary(), o.getEmail(), o.getAge())));
  61.         });
  62.  
  63.  
  64.     }
  65.  
  66.     public static class Employee {
  67.         private String name;
  68.         private double salary;
  69.         private String position;
  70.         private String department;
  71.         private String email;
  72.         private int age;
  73.  
  74.         public Employee(String name, double salary, String position, String department) {
  75.             this.name = name;
  76.             this.salary = salary;
  77.             this.position = position;
  78.             this.department = department;
  79.             this.email = "n/a";
  80.             this.age = -1;
  81.         }
  82.  
  83.         public String getName() {
  84.             return name;
  85.         }
  86.  
  87.         public double getSalary() {
  88.             return salary;
  89.         }
  90.  
  91.         public String getPosition() {
  92.             return position;
  93.         }
  94.  
  95.         public String getDepartment() {
  96.             return department;
  97.         }
  98.  
  99.         public String getEmail() {
  100.             return email;
  101.         }
  102.  
  103.         public int getAge() {
  104.             return age;
  105.         }
  106.  
  107.         public void setEmail(String email) {
  108.             this.email = email;
  109.         }
  110.  
  111.         public void setAge(int age) {
  112.             this.age = age;
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement