Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String input = scanner.nextLine();
- HashMap<String,Integer>nameAndFoodLimit=new LinkedHashMap<>();
- HashMap<String,Integer>areaAndCountAnimals=new LinkedHashMap<>();
- while (!input.equals("Last Info")){
- String [] tokens=input.split(":");
- String command=tokens[0];
- String name=tokens[1];
- int dailyFoodLimit=Integer.parseInt(tokens[2]);
- String area=tokens[3];
- if(command.equals("Add")){
- if(!nameAndFoodLimit.containsKey(name)){
- nameAndFoodLimit.put(name,dailyFoodLimit);
- }else{
- Integer foodLimit = nameAndFoodLimit.get(name);
- int limitCurrent = foodLimit + dailyFoodLimit;
- nameAndFoodLimit.put(name,limitCurrent);
- if(!areaAndCountAnimals.containsKey(area)){
- areaAndCountAnimals.put(area,1);
- }else{
- Integer countAnimals = areaAndCountAnimals.get(area);
- areaAndCountAnimals.put(area,countAnimals+1);
- }
- }
- }else if(command.equals("Feed")){
- if(nameAndFoodLimit.containsKey(name)){
- Integer limit = nameAndFoodLimit.get(name);
- int leftFood = limit - dailyFoodLimit;
- if(leftFood<=0){
- nameAndFoodLimit.remove(name);
- System.out.println(name+" was successfully fed");
- Integer count = areaAndCountAnimals.get(name);
- areaAndCountAnimals.put(name,count-1);
- }else{
- nameAndFoodLimit.put(name, leftFood);
- }
- }
- }
- input=scanner.nextLine();
- }
- System.out.println("Animals:");
- nameAndFoodLimit.entrySet().stream()
- .sorted((f,s)->{//тук в descending order искаме да сравним Value
- int result = s.getValue().compareTo(f.getValue());
- if(result==0){//ако по първи параметър (Value) са равни като сравним, тогава по (Key) ascending order
- result= f.getKey().compareTo(s.getKey());
- }
- return result;
- })
- .forEach(entry->
- System.out.printf("%s -> %dg%n",entry.getKey(),entry.getValue()));
- System.out.println();
- System.out.println("Areas with hungry animals:");
- areaAndCountAnimals.entrySet()
- .stream()
- .filter(entry->entry.getValue()>0)// entry отива в getValue и тук проверяваме дали е нахранено животното
- .sorted((f,s)-> s.getValue().compareTo(f.getValue()))//подреждаме в descending order
- .forEach(entry->{
- System.out.printf("%s : %d%n",entry.getKey(),entry.getValue());
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement