Advertisement
Georgi_Benchev

Untitled

Dec 2nd, 2024
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.81 KB | None | 0 0
  1. package set_and_Map_CodingTasks_1;
  2.  
  3. import java.util.*;
  4.  
  5. public class newSolution {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         Map<String, Item> inventory = new HashMap<>();
  10.  
  11.         String input = "";
  12.         while (!"end".equals(input = scanner.nextLine())) {
  13.             String[] parameters = input.split(" ");
  14.             String command = parameters[0];
  15.  
  16.             StringBuilder output = new StringBuilder();
  17.             output.append("Ok: ");
  18.  
  19.             if (command.equals("add")) {
  20.                 String itemName = parameters[1];
  21.                 double itemPrice = Double.parseDouble(parameters[2]);
  22.                 String itemType = parameters[3];
  23.                 if (inventory.containsKey(itemName)) {
  24.                     System.out.printf("Error: Item %s already exists%n", itemName);
  25.                 } else {
  26.                     Item item = new Item(itemName, itemPrice, itemType);
  27.                     inventory.put(itemName, item);
  28.                     System.out.printf("Ok: Item %s added successfully%n", itemName);
  29.                 }
  30.                 continue;
  31.             } else if (command.equals("filter")) {
  32.                 String filtrationType = parameters[2];
  33.  
  34.                 if (filtrationType.equals("price")) {
  35.                     String priceType = parameters[3];
  36.  
  37.                     if (priceType.equals("to")) {
  38.                         double maxPrice = Double.parseDouble(parameters[4]);
  39.  
  40.                         inventory.entrySet().stream()
  41.                                 .sorted(Comparator.comparing((e1) -> e1.getValue().price))
  42.                                 .filter(e -> e.getValue().price <= maxPrice)
  43.                                 .limit(10)
  44.                                 .forEach(e -> output.append(String.format("%s, ", e.getValue().asString())));
  45.  
  46.                     } else if (priceType.equals("from")) {
  47.                         double minValue = Double.parseDouble(parameters[4]);
  48.  
  49.                         inventory.entrySet().stream()
  50.                                 .sorted(Comparator.comparing((e1) -> e1.getValue().price))
  51.                                 .filter(parameters.length == 5 ? e -> e.getValue().price >= minValue : e -> e.getValue().price >= minValue && e.getValue().price <= Double.parseDouble(parameters[6]))
  52.                                 .limit(10)
  53.                                 .forEach(e -> output.append(String.format("%s, ", e.getValue().asString())));
  54.                     }
  55.  
  56.                 } else if (filtrationType.equals("type")) {
  57.                     String typeToFilter = parameters[3];
  58.  
  59.                     if (inventory.values().stream().noneMatch(item -> item.type.equals(typeToFilter))) {
  60.                         System.out.printf("Error: Type %s does not exist%n", typeToFilter);
  61.                         continue;
  62.                     }
  63.  
  64.                     inventory.entrySet().stream()
  65.                             .sorted(Comparator.comparing((e1) -> e1.getValue().price))
  66.                             .filter(e -> e.getValue().type.equals(typeToFilter))
  67.                             .limit(10)
  68.                             .forEach(e -> output.append(String.format("%s, ", e.getValue().asString())));
  69.                 }
  70.             }
  71.  
  72.             if (output.length() == 4) {
  73.                 System.out.println("Ok: ");
  74.             } else {
  75.                 System.out.println(output.substring(0, output.length() - 2));
  76.             }
  77.         }
  78.     }
  79. }
  80.  
  81. class Item {
  82.     String name;
  83.     double price;
  84.     String type;
  85.  
  86.     public Item(String name, double price, String type) {
  87.         this.name = name;
  88.         this.price = price;
  89.         this.type = type;
  90.     }
  91.  
  92.     public String asString() {
  93.         return String.format("%s(%.2f)", name, price);
  94.     }
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement