Advertisement
Georgi_Benchev

Untitled

Dec 2nd, 2024
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.60 KB | None | 0 0
  1. package set_and_Map_CodingTasks_1;
  2.  
  3. import java.util.*;
  4. import java.util.stream.Collectors;
  5.  
  6. public class newSolution {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         Map<String, Item> inventory = new HashMap<>();
  11.  
  12.         String input;
  13.         while (!"end".equals(input = scanner.nextLine())) {
  14.             String[] parameters = input.split(" ");
  15.             String command = parameters[0];
  16.  
  17.             if (command.equals("add")) {
  18.                 String itemName = parameters[1];
  19.                 double itemPrice = Double.parseDouble(parameters[2]);
  20.                 String itemType = parameters[3];
  21.                 if (inventory.containsKey(itemName)) {
  22.                     System.out.printf("Error: Item %s already exists%n", itemName);
  23.                 } else {
  24.                     Item item = new Item(itemName, itemPrice, itemType);
  25.                     inventory.put(itemName, item);
  26.                     System.out.printf("Ok: Item %s added successfully%n", itemName);
  27.                 }
  28.  
  29.             } else if (command.equals("filter")) {
  30.                 String filtrationType = parameters[2];
  31.  
  32.                 if (filtrationType.equals("price")) {
  33.                     String priceType = parameters[3];
  34.  
  35.                     if (priceType.equals("to")) {
  36.                         double maxPrice = Double.parseDouble(parameters[4]);
  37.  
  38.                         List<Item> filteredItems = new ArrayList<>();
  39.  
  40.  
  41.                         inventory.entrySet().stream()
  42.                                 .filter(e -> e.getValue().price <= maxPrice)
  43.                                 .forEach(e -> {
  44.                                     filteredItems.add(e.getValue());
  45.  
  46.  
  47.                                     StringBuilder sb = new StringBuilder();
  48.                                     sb.append("Ok: ");
  49.                                     sb.append(String.join(", ", output));
  50.                                     System.out.println(sb);
  51.  
  52.                                 } else if (priceType.equals("from")) {
  53.                             if (inputLine.length == 5) {
  54.                                 // min
  55.                                 double minValue = Double.parseDouble(inputLine[4]);
  56.  
  57.  
  58.                                 List<String> output = new ArrayList<>();
  59.  
  60.  
  61.                                 inventoryPrices.entrySet().stream()
  62.                                         .sorted(Map.Entry.comparingByValue())
  63.                                         .filter(e -> e.getValue() >= minValue)
  64.                                         .limit(10)
  65.                                         .forEach(e -> {
  66.                                             output.add(String.format("%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey())));
  67.                                         });
  68.                                 StringBuilder sb = new StringBuilder();
  69.                                 sb.append("Ok: ");
  70.                                 sb.append(String.join(", ", output));
  71.                                 System.out.println(sb);
  72.  
  73.  
  74.                             } else {
  75.                                 // size 6 - min i max
  76.                                 Double minValue = Double.parseDouble(inputLine[4]);
  77.                                 Double maxValue = Double.parseDouble(inputLine[6]);
  78.  
  79.                                 List<String> output = new ArrayList<>();
  80.  
  81.  
  82.                                 inventoryPrices.entrySet().stream()
  83.                                         .sorted(Map.Entry.comparingByValue())
  84.                                         .filter(e -> e.getValue() >= minValue && e.getValue() <= maxValue)
  85.                                         .limit(10)
  86.                                         .forEach(e -> {
  87.                                             output.add(String.format("%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey())));
  88.                                         });
  89.                                 StringBuilder sb = new StringBuilder();
  90.                                 sb.append("Ok: ");
  91.                                 sb.append(String.join(", ", output));
  92.                                 System.out.println(sb);
  93.  
  94.  
  95.                             }
  96.                         }
  97.  
  98.                     } else if (filtrationType.equals("type")) {
  99.                         String typeToFilter = parameters[3];
  100.  
  101.                         if (inventory.values().stream().noneMatch(item -> item.type.equals(typeToFilter))) {
  102.                             System.out.printf("Error: Type %s does not exist%n", typeToFilter);
  103.                         } else {
  104.  
  105.                             StringBuilder sb = new StringBuilder();
  106.                             sb.append("Ok:");
  107.  
  108.                             inventory.entrySet().stream()
  109.                                     .filter(e -> e.getValue().type.equals(typeToFilter))
  110.                                     .limit(10)
  111.                                     .forEach(e -> sb.append(String.format(" %s,", e.getValue().toString())));
  112.  
  113.  
  114.                             System.out.println(sb.substring(0, sb.length() - 2));
  115.                         }
  116.                     }
  117.                 }
  118.  
  119.             }
  120.  
  121.  
  122.         }
  123.     }
  124.  
  125.     static class Item {
  126.         String name;
  127.         double price;
  128.         String type;
  129.  
  130.         public Item(String name, double price, String type) {
  131.             this.name = name;
  132.             this.price = price;
  133.             this.type = type;
  134.         }
  135.  
  136.         @Override
  137.         public String toString() {
  138.             return String.format("%s (%.2f)", name, price);
  139.         }
  140.     }
  141. }
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement