Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class FeedTheAnimals {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String input = scanner.nextLine();
- Map<String, Integer> animals = new LinkedHashMap<>();
- Map<String, List<String>> areas = new LinkedHashMap<>();
- while (!input.equals("Last Info")){
- String[] data = input.split(":");
- String command = data[0];
- String name = data[1];
- int food = Integer.parseInt(data[2]);
- String area = data[3];
- switch (command){
- case "Add":
- if (!animals.containsKey(name)){
- animals.put(name, food);
- if (!areas.containsKey(area)) {
- areas.put(area, new ArrayList<>());
- }
- areas.get(area).add(name);
- } else {
- int newFood = animals.get(name) + food;
- animals.put(name, newFood);
- }
- break;
- case "Feed":
- if (animals.containsKey(name)){
- animals.put(name, animals.get(name) - food);
- if (animals.get(name)<=0){
- System.out.printf("%s was successfully fed%n", name);
- animals.remove(name);
- areas.get(area).remove(name);
- }
- }
- break;
- }
- input = scanner.nextLine();
- }
- System.out.println("Animals:");
- animals.entrySet().stream().sorted((e1, e2) -> {
- int sort = e2.getValue().compareTo(e1.getValue());
- if (sort ==0){
- sort = e1.getKey().compareTo(e2.getKey());
- }
- return sort;
- }).forEach(e -> System.out.printf("%s -> %dg%n", e.getKey(), e.getValue()));
- System.out.println("Areas with hungry animals:");
- areas.entrySet().stream().sorted((e1, e2) ->{
- int sort = Integer.compare(e2.getValue().size(), e1.getValue().size());
- //if (sort == 0){
- // sort = e2.getKey().compareTo(e1.getKey());
- //}
- return sort;
- }).forEach(e -> {
- if (e.getValue().size()>=1){
- System.out.printf("%s : %d%n", e.getKey(), e.getValue().size());
- }
- });
- //System.out.println(animals);
- //System.out.println(areas);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement