Guest User

Untitled

a guest
May 9th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3. import java.util.TreeMap;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class Problem4 {
  8.     public static void main(String[] args) {
  9.         Scanner sc = new Scanner(System.in);
  10.         Pattern pat = Pattern.compile("^([a-zA-Z]+);([-]?[0-9]+);([-]?[0-9]*\\.?[0-9]+);([a-zA-Z]+)$");
  11.         TreeMap<String,Double> teamMap = new TreeMap<>();
  12.         TreeMap<String,TreeMap<String,Double>> employeeMap = new TreeMap<>();
  13.         TreeMap<String,TreeMap<String,Integer>> employeeHours = new TreeMap<>();
  14.         ArrayList<String> employees = new ArrayList<>();
  15.         String line = "";
  16.         while(!(line = sc.nextLine()).equals("Pishi kuf i da si hodim")){
  17.             Matcher match = pat.matcher(line);
  18.             String employee ="";
  19.             int workhours = 0;
  20.             double payment = 0;
  21.             String team = "";
  22.             while(match.find()){
  23.                 employee = match.group(1);
  24.                 workhours = Integer.parseInt(match.group(2));
  25.                 payment = Double.parseDouble(match.group(3));
  26.                 team = match.group(4);
  27.                 if(employees.contains(employee)){
  28.                     break;
  29.                 }else{
  30.                     employees.add(employee);
  31.                 }
  32.                 double formulaMonth = ((payment*workhours)/(double)24)*(double)30;
  33.                 double formulaDay = ((payment*workhours)/(double)24);
  34.                 if(!teamMap.containsKey(team)){
  35.                     teamMap.put(team,0d);
  36.                     employeeMap.put(team, new TreeMap<>());
  37.                     employeeHours.put(team,new TreeMap<>());
  38.                 }
  39.                 teamMap.put(team,teamMap.get(team)+formulaMonth);
  40.                 employeeHours.get(team).put(employee,workhours);
  41.                 employeeMap.get(team).put(employee,formulaDay);
  42.             }
  43.         }
  44.  
  45.         teamMap.entrySet().stream().sorted((t1,t2) -> Double.compare(t2.getValue(),t1.getValue()))
  46.                 .forEach(t1->{
  47.                     System.out.printf("Team - %s\n", t1.getKey());
  48.                     TreeMap<String, Double> sortPayment = employeeMap.get(t1.getKey());
  49.                     TreeMap<String,Integer> sortHours = employeeHours.get(t1.getKey());
  50.                     sortPayment.entrySet().stream().sorted((a,b)-> Double.compare(b.getValue(),a.getValue()))
  51.                             .sorted((a,b)-> Integer.compare(sortHours.get(b.getKey()),sortHours.get(a.getKey()))).forEach(emp ->{
  52.                         System.out.printf("$$$%s - %d - %.6f\n",emp.getKey(), sortHours.get(emp.getKey()),sortPayment.get(emp.getKey()));
  53.                     });
  54.                 });
  55.     }
  56. }
Add Comment
Please, Sign In to add comment