Guest User

Untitled

a guest
Jan 10th, 2020
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. package com.scalefocus;
  2.  
  3.  
  4. import java.util.*;
  5.  
  6.  
  7. public class Main {
  8.  
  9. public static void main(String[] args) {
  10. Scanner sc = new Scanner(System.in);
  11. String command = sc.nextLine();
  12. LinkedHashMap<String, LinkedHashMap<String, Long>> venues = new LinkedHashMap<>();
  13. LinkedHashMap<String, Long> countryPopulation = new LinkedHashMap<>();
  14. while (!command.equals("End")) {
  15. if (inputIsValid(command)) {
  16. String[] extractedData = extractData(command);
  17. String venue = extractedData[1];
  18. String singer = extractedData[0];
  19.  
  20. int ticketPrice = Integer.parseInt(extractedData[2]);
  21. int ticketCount = Integer.parseInt(extractedData[3]);
  22. long concertAmount = ticketPrice*ticketCount;
  23. if (!venues.containsKey(venue)) {
  24. LinkedHashMap<String, Long> singers = new LinkedHashMap<>();
  25. singers.put(singer, concertAmount);
  26. venues.put(venue, singers);
  27. //countryPopulation.put(country, population);
  28. } else if (!venues.get(venue).containsKey(singer)) {
  29. venues.get(venue).put(singer, concertAmount);
  30. //countryPopulation.put(country, countryPopulation.get(country) + population);
  31. } else {
  32. venues.get(venue).put(singer, venues.get(venue).get(singer) + concertAmount);
  33. }
  34. }
  35. command = sc.nextLine();
  36. }
  37.  
  38. venues.entrySet().stream().forEach(venue ->{
  39. System.out.println(venue.getKey());
  40. venues.get(venue.getKey()).entrySet().stream().sorted(Map.Entry.comparingByValue(Collections.reverseOrder()))
  41. .forEach(singer -> System.out.println("# " + singer.getKey() + " -> " + singer.getValue()));
  42. });
  43.  
  44.  
  45. }
  46.  
  47. private static String[] extractData(String command) {
  48. String[] result = new String[4];
  49. String[] tokens = command.split(" @");
  50. String singer = tokens[0];
  51. result[0] = singer;
  52. String remainingData = tokens[1];
  53. String[] remainingTokens = remainingData.split(" ");
  54. if (remainingTokens.length==3){
  55. String venue = remainingTokens[0];
  56. result[1] = venue;
  57. result[2] = remainingTokens[1];
  58. result[3] = remainingTokens[2];
  59.  
  60. } else {
  61.  
  62.  
  63.  
  64. StringBuilder venue = new StringBuilder();
  65. for (int i = 0; i < remainingTokens.length-3 ; i++) {
  66. venue.append(remainingTokens[i]).append(" ");
  67. }
  68. venue.append(remainingTokens[remainingTokens.length - 3]);
  69. result[1] = venue.toString();
  70. result[2] = remainingTokens[remainingTokens.length-2];
  71. result[3] = remainingTokens[remainingTokens.length-1];
  72. }
  73. return result;
  74.  
  75. }
  76.  
  77. private static boolean inputIsValid(String command) {
  78. String[] tokens = command.split(" @");
  79. if (tokens.length !=2) {
  80. return false;
  81. }
  82. String singer = tokens[0];
  83. String remainingData = tokens[1];
  84. String[] remainingTokens = remainingData.split(" ");
  85. try {
  86. int ticketPrice = Integer.parseInt(remainingTokens[remainingTokens.length-1]);
  87. int ticketCount = Integer.parseInt(remainingTokens[remainingTokens.length-2]);
  88. long concertAmount = ticketPrice*ticketCount;
  89. } catch (NumberFormatException e){
  90. return false;
  91. }
  92. return remainingTokens.length >= 3;
  93.  
  94. }
  95.  
  96.  
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment