Filip_Markoski

[NP] Audition

Dec 23rd, 2017
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.28 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class AuditionTest {
  4.     public static void main(String[] args) {
  5.         Audition audition = new Audition();
  6.         List<String> cities = new ArrayList<String>();
  7.         Scanner scanner = new Scanner(System.in);
  8.         while (scanner.hasNextLine()) {
  9.             String line = scanner.nextLine();
  10.             String[] parts = line.split(";");
  11.             if (parts.length > 1) {
  12.                 audition.addParticpant(parts[0], parts[1], parts[2],
  13.                         Integer.parseInt(parts[3]));
  14.             } else {
  15.                 cities.add(line);
  16.             }
  17.         }
  18.         for (String city : cities) {
  19.             System.out.printf("+++++ %s +++++\n", city);
  20.             audition.listByCity(city);
  21.         }
  22.         scanner.close();
  23.     }
  24. }
  25.  
  26. class Audition {
  27.     Map<String, Set<Participant>> participants;
  28.  
  29.     public Audition() {
  30.         participants = new HashMap<>();
  31.     }
  32.  
  33.     private Comparator<Participant> comparator =
  34.             Comparator.comparing(Participant::getName)
  35.                     .thenComparing(Participant::getAge);
  36.  
  37.     void addParticpant(String city, String code, String name, int age) {
  38.         Participant participant = new Participant(code, name, age);
  39.         participants.computeIfAbsent(city, key -> new HashSet<>()).add(participant);        
  40.     }
  41.  
  42.     public void listByCity(String city) {
  43.         participants.get(city).stream()
  44.                 .sorted(comparator)
  45.                 .forEach(System.out::println);
  46.     }
  47. }
  48.  
  49. class Participant {
  50.     private final String code;
  51.     private final String name;
  52.     private final int age;
  53.  
  54.     public Participant(String code, String name, int age) {
  55.         this.code = code;
  56.         this.name = name;
  57.         this.age = age;
  58.     }
  59.  
  60.     public String getName() {
  61.         return name;
  62.     }
  63.     public int getAge() {
  64.         return age;
  65.     }
  66.     public String getCode() {
  67.         return code;
  68.     }
  69.  
  70.     @Override
  71.     public boolean equals(Object obj) {
  72.         Participant p = (Participant) obj;
  73.         return code.equals(p.code);
  74.     }
  75.  
  76.     @Override
  77.     public int hashCode() {
  78.         return code.hashCode();
  79.     }
  80.  
  81.     @Override
  82.     public String toString() {
  83.         return String.format("%s %s %d", code, name, age);
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment