Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class test {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- LinkedHashMap<String, LinkedHashMap<String, Integer>> venues = new LinkedHashMap<>();
- while (true) {
- String line = scanner.nextLine();
- if ("End".equals(line)) {
- break;
- }
- String[] tokens = line.split(" @");
- if (tokens.length != 2)
- continue;
- String singerName = tokens[0];
- String[] venueAndTicketTokens = tokens[1].split(" ");
- if (venueAndTicketTokens.length < 3) //venue name + ticket price + ticket count -> minimum 3 elements
- continue;
- int ticketCount = validateNumber(venueAndTicketTokens[venueAndTicketTokens.length - 1]);
- int ticketPrice = validateNumber(venueAndTicketTokens[venueAndTicketTokens.length - 2]);
- if (ticketCount == -1 || ticketPrice == -1)
- continue;
- String venueName = getVenueName(venueAndTicketTokens);
- venues.putIfAbsent(venueName, new LinkedHashMap<>());
- venues.get(venueName).putIfAbsent(singerName, 0);
- int currentSum = ticketCount * ticketPrice;
- venues.get(venueName).put(singerName, venues.get(venueName).get(singerName) + currentSum);
- }
- for (Map.Entry<String, LinkedHashMap<String, Integer>> entry : venues.entrySet()) {
- System.out.println(entry.getKey());
- entry.getValue()
- .entrySet()
- .stream()
- .sorted((s1, s2) -> s2.getValue().compareTo(s1.getValue()))
- .forEach(s -> System.out.printf("# %s -> %d%n", s.getKey(), s.getValue()));
- }
- }
- private static String getVenueName(String[] venueAndTicketTokens) {
- String result = "";
- for (int i = 0; i < venueAndTicketTokens.length - 2; i++) {
- result += venueAndTicketTokens[i] + " ";
- }
- return result.trim();
- }
- private static int validateNumber(String element) {
- int number = -1;
- try {
- number = Integer.parseInt(element);
- } catch (NumberFormatException ignored) {
- }
- return number;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment