Advertisement
nikeza

Concert /Map <String, List<String>>/

Jul 27th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.73 KB | None | 0 0
  1. package TechFundamentals;
  2.  
  3. import com.sun.source.tree.WhileLoopTree;
  4.  
  5. import java.sql.SQLOutput;
  6. import java.util.*;
  7. import java.util.logging.Level;
  8. import java.util.regex.Matcher;
  9. import java.util.regex.Pattern;
  10. import java.util.spi.AbstractResourceBundleProvider;
  11. import java.util.stream.Collectors;
  12. import java.util.stream.IntStream;
  13.  
  14.  
  15. public class array_temp {
  16.  
  17.  
  18.     public static void main(String[] args) {
  19.         Scanner scanner = new Scanner(System.in);
  20.         String input = scanner.nextLine();
  21.  
  22.         Map<String, List<String>> band = new LinkedHashMap<>();
  23.         int totalSum = 0;
  24.         while (!input.equals("start of concert")) {
  25.             String[] tokens = input.split("; ");
  26.             String command = tokens[0];
  27.             String name = tokens[1];
  28.  
  29.             List<String> nameEndTime = band.get(name);
  30.             if (command.equals("Play")) {
  31.                 int time = Integer.parseInt(tokens[2]);
  32.                 totalSum += time;
  33.                 if (!band.containsKey(name)) {
  34.                     nameEndTime = new ArrayList<>();
  35.                     nameEndTime.add(tokens[2]);
  36.                     band.put(name, nameEndTime);
  37.                 } else {
  38.                     if (Character.isDigit(band.get(name).get(0).charAt(0))) {
  39.                         String firstListIndex = band.get(name).get(0);
  40.                         int firstNum = time + (Integer.parseInt(firstListIndex));
  41.                         String newFirstIndex = firstNum + "";
  42.                         band.get(name).set(0, newFirstIndex);
  43.                     } else {
  44.                         band.get(name).add(0, tokens[2]);
  45.                     }
  46.                 }
  47.  
  48.             } else {
  49.                 String[] tokensName = tokens[2].split(", ");
  50.                 for (int i = 0; i < tokensName.length; i++) {
  51.                     if (!band.containsKey(name)) {
  52.                         String nameToAdd = tokensName[i];
  53.                         nameEndTime = new ArrayList<>();
  54.                         nameEndTime.add(nameToAdd);
  55.                         band.put(name, nameEndTime);
  56.                     } else {
  57.                         String nameTokens = tokensName[i];
  58.                         for (int j = 0; j < band.get(name).size(); j++) {
  59.                             if (!band.get(name).contains(nameTokens)) {
  60.                                 band.get(name).add(nameTokens);
  61.                             }
  62.                         }
  63.  
  64.                     }
  65.                 }
  66.  
  67.             }
  68.             input = scanner.nextLine();
  69.         }
  70.  
  71.         System.out.printf("Total time: %d%n", totalSum);
  72.         band.entrySet().stream()
  73.                 .sorted((f, s) -> {
  74.                     int one = Integer.parseInt(f.getValue().get(0));
  75.                     int two = Integer.parseInt(s.getValue().get(0));
  76.                     int sorted = two - one;
  77.                     if (sorted != 0) {
  78.                         return Integer.compare(two, one);
  79.                     } else {
  80.                         return f.getKey().compareTo(s.getKey());
  81.                     }
  82.                 })
  83.                 .forEach(e -> {
  84.                     System.out.printf("%s -> ", e.getKey());
  85.                     for (String s : e.getValue()) {
  86.                         System.out.println(s);
  87.                         break;
  88.                     }
  89.                 });
  90.         String bandNameToPrint = scanner.nextLine();
  91.  
  92.         if (band.containsKey(bandNameToPrint)) {
  93.             System.out.println(bandNameToPrint);
  94.         }
  95.         for (int i = 0; i < band.get(bandNameToPrint).size(); i++) {
  96.             if (i != 0) {
  97.                 System.out.printf("=> %s%n", band.get(bandNameToPrint).get(i));
  98.             }
  99.         }
  100.  
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement