package TextProcessing; import java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class exam2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); Map> AnimalLimitArea = new TreeMap<>(); Map AreaLimit = new LinkedHashMap<>(); Map AreaAnim = new LinkedHashMap<>(); while (!input.equals("Last Info")) { String[] info = input.split(":"); if (info[0].equals("Add")) { String name = info[1]; Integer limit = Integer.parseInt(info[2]); String area = info[3]; if (!AnimalLimitArea.keySet().contains(name)) { AnimalLimitArea.putIfAbsent(name, new TreeMap<>()); AnimalLimitArea.get(name).putIfAbsent(area, limit); AreaAnim.putIfAbsent(area,1); } else { int oldLimit = AnimalLimitArea.get(name).get(area); AnimalLimitArea.get(name).put(area, oldLimit + limit); AreaAnim.put(area,AreaAnim.get(area)+1); } } else if (info[0].equals("Feed")) { String name = info[1]; Integer feed = Integer.parseInt(info[2]); String area = info[3]; if (AnimalLimitArea.keySet().contains(name)) { int Hungry = AnimalLimitArea.get(name).get(area) - feed; if (Hungry < 0) { System.out.println(String.format("%s was successfully fed", name)); AnimalLimitArea.get(name).remove(area); } else { AnimalLimitArea.get(name).put(area, Hungry); AreaLimit.putIfAbsent(name, Hungry); } } input = scanner.nextLine(); } } System.out.println("Animals"); AreaLimit.entrySet().stream() .sorted(Map.Entry.comparingByValue().reversed() .thenComparing(Map.Entry::getKey)).forEach(a -> { System.out.println(String.format("%s -> %dg", a.getKey(), a.getValue())); }); System.out.println("Areas with hungry animals:"); AreaAnim.entrySet().stream().sorted(Map.Entry.comparingByValue().reversed()) .forEach(a->{ System.out.println(String.format("%s : %d",a.getKey(),a.getValue())); }); } } // forEach(al->{ // String name = al.getKey(); // AreaLimit=al.getValue(); // AreaLimit.entrySet().stream().sorted(Map.Entry.comparingByValue()); // }).