Advertisement
Georgi_Benchev

Untitled

Dec 3rd, 2024
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.86 KB | None | 0 0
  1. package set_and_Map.CodingTasks_2;
  2.  
  3. import java.util.*;
  4.  
  5. public class Gotta_Catch_Them_All {
  6.  
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         Map<String, Set<Pokemon>> typesOfPokemon = new HashMap<>();
  11.         List<Pokemon> rankList = new ArrayList<>();
  12.  
  13.  
  14.         String inputLine = "";
  15.         while (!"end".equals(inputLine = scanner.nextLine())) {
  16.             String[] parameters = inputLine.split(" ");
  17.             String command = parameters[0];
  18.  
  19.             switch (command) {
  20.                 case "add": {
  21.                     String pokemonName = parameters[1];
  22.                     String pokemonType = parameters[2];
  23.                     int pokemonPower = Integer.parseInt(parameters[3]);
  24.                     int pokemonPosition = Integer.parseInt(parameters[4]);
  25.  
  26.                     Pokemon newPokemon = new Pokemon(pokemonName, pokemonType, pokemonPower);
  27.  
  28.                     if (!typesOfPokemon.containsKey(pokemonType)) {
  29.                         typesOfPokemon.put(pokemonType, new TreeSet<>());
  30.                     }
  31.                     typesOfPokemon.get(pokemonType).add(newPokemon);
  32.                     if (pokemonPosition - 1 == rankList.size()) {
  33.                         rankList.add(newPokemon);
  34.  
  35.                     } else {
  36.                         rankList.add(pokemonPosition - 1, newPokemon);
  37.                     }
  38.  
  39.                     System.out.printf("Added pokemon %s to position %d%n", pokemonName, pokemonPosition);
  40.                     break;
  41.                 }
  42.                 case "find": {
  43.                     String typeToFind = parameters[1];
  44.                     StringBuilder sb = new StringBuilder();
  45.                     sb.append(String.format("Type %s: ", typeToFind));
  46.  
  47.                     if (typesOfPokemon.containsKey(typeToFind)) {
  48.                         typesOfPokemon.get(typeToFind).stream()
  49.                                 .limit(5)
  50.                                 .forEach(pokemon -> sb.append(pokemon.toString()));
  51.                         System.out.println(sb.substring(0, sb.length() - 2));
  52.                     } else {
  53.                         System.out.println(sb);
  54.                     }
  55.                     break;
  56.                 }
  57.                 case "ranklist": {
  58.                     int startPosition = Integer.parseInt(parameters[1]);
  59.                     int endPosition = Integer.parseInt(parameters[2]);
  60.                     StringBuilder sb = new StringBuilder();
  61.  
  62.  
  63.                     for (int i = startPosition - 1; i < endPosition; i++) {
  64.                         sb.append(String.format("%d. %s", startPosition++, rankList.get(i).toString()));
  65.                     }
  66.  
  67.                     if (sb.length() > 2) {
  68.                         System.out.println(sb.substring(0, sb.length() - 2));
  69.                     } else {
  70.                         System.out.println("No items");
  71.                     }
  72.                     break;
  73.                 }
  74.  
  75.             }
  76.  
  77.  
  78.         }
  79.  
  80.  
  81.     }
  82. }
  83.  
  84. class Pokemon implements Comparable<Pokemon> {
  85.     private final String name;
  86.     private final String type;
  87.     private final Integer power;
  88.  
  89.     public Pokemon(String name, String type, int power) {
  90.         this.name = name;
  91.         this.type = type;
  92.         this.power = power;
  93.     }
  94.  
  95.     public String getName() {
  96.         return name;
  97.     }
  98.  
  99.     public String getType() {
  100.         return type;
  101.     }
  102.  
  103.     public int getPower() {
  104.         return power;
  105.     }
  106.  
  107.     @Override
  108.     public int compareTo(Pokemon o) {
  109.         return Comparator
  110.                 .comparing(Pokemon::getName)
  111.                 .thenComparing(Pokemon::getPower, Comparator.reverseOrder())
  112.                 .compare(this, o);
  113.     }
  114.  
  115.     @Override
  116.     public String toString() {
  117.         return String.format("%s(%d); ", getName(), getPower());
  118.     }
  119. }
  120.  
  121.  
  122.  
  123.  
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement