kristina7

НП - Audition

Jan 12th, 2019
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.32 KB | None | 0 0
  1. /*
  2. Да се имплементира класа за аудиција Audition со следните методи:
  3. void addParticpant(String city, String code, String name, int age) додава нов кандидат со код code, име и возраст за аудиција во даден град city. Во ист град не се дозволува додавање на кандидат со ист код како некој претходно додаден кандидат (додавањето се игнорира, а комплексноста на овој метод треба да биде O(1))
  4. void listByCity(String city) ги печати сите кандидати од даден град подредени според името, а ако е исто според возраста (комплексноста на овој метод не треба да надминува O(n∗log2(n)), каде n е бројот на кандидати во дадениот град).
  5. */
  6.  
  7. import java.util.ArrayList;
  8. import java.util.Comparator;
  9. import java.util.HashSet;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Scanner;
  13. import java.util.Set;
  14. import java.util.TreeMap;
  15.  
  16. class Participant {
  17.     String city, code, name;
  18.     int age;
  19.  
  20.     public Participant(String city, String code, String name, int age) {
  21.         super();
  22.         this.city = city;
  23.         this.code = code;
  24.         this.name = name;
  25.         this.age = age;
  26.     }
  27.  
  28.     public String getName() {
  29.         return name;
  30.     }
  31.  
  32.     public int getAge() {
  33.         return age;
  34.     }
  35.  
  36.     @Override
  37.     public String toString() {
  38.         return String.format("%s %s %s", code, name, age);
  39.     }
  40.  
  41.  
  42.     @Override public int hashCode() {
  43.         return code.hashCode();
  44.     }
  45.  
  46.     @Override
  47.     public boolean equals(Object obj) {
  48.         Participant other = (Participant) obj;
  49.         if (code.equals(other.code))
  50.             return true;
  51.         return false;
  52.     }
  53. }
  54.  
  55. class Audition {
  56.     Map<String, Set<Participant>> participants;
  57.  
  58.     public Audition() {
  59.         participants = new TreeMap<>();
  60.     }
  61.  
  62.     public void addParticpant(String city, String code, String name, int age) {
  63.         participants.computeIfAbsent(city, key -> new HashSet<>());
  64.         participants.get(city).add(new Participant(city, code, name, age));
  65.     }
  66.  
  67.     void listByCity(String city) {
  68.         participants.get(city).stream()
  69.         .sorted(Comparator.comparing(Participant::getName).thenComparing(Participant::getAge))
  70.         .forEach(System.out::println);
  71.     }
  72. }
  73.  
  74. public class AuditionTest {
  75.     public static void main(String[] args) {
  76.         Audition audition = new Audition();
  77.         List<String> cities = new ArrayList<String>();
  78.         Scanner scanner = new Scanner(System.in);
  79.         while (scanner.hasNextLine()) {
  80.             String line = scanner.nextLine();
  81.             String[] parts = line.split(";");
  82.             if (parts.length > 1) {
  83.                 audition.addParticpant(parts[0], parts[1], parts[2], Integer.parseInt(parts[3]));
  84.             } else {
  85.                 cities.add(line);
  86.             }
  87.         }
  88.         for (String city : cities) {
  89.             System.out.printf("+++++ %s +++++\n", city);
  90.             audition.listByCity(city);
  91.         }
  92.         scanner.close();
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment