Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import javafx.util.Pair;
- import javax.xml.crypto.dsig.keyinfo.KeyValue;
- import java.lang.reflect.Array;
- import java.security.KeyStore;
- import java.text.Collator;
- import java.text.DecimalFormat;
- import java.util.*;
- import java.util.function.Predicate;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collector;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- //comments - likes
- Map<String, int[]> record = new LinkedHashMap<>();
- String input = "";
- while (!"Log out".equals(input = scanner.nextLine())){
- String[] tokens = input.split(": ");
- String command = tokens[0];
- String[] token;
- switch (command){
- case "New follower":
- String username = tokens[1];
- if(!record.containsKey(username)){
- int[] userData = {0, 0};
- record.put(username, userData);
- }
- break;
- case "Like":
- String user = tokens[1];
- int likes = Integer.parseInt(tokens[2]);
- if(!record.containsKey(user)){
- int[] dataLikes = {0, likes};
- record.put(user, dataLikes);
- }else {
- int[] dataLikes = {record.get(user)[0], record.get(user)[1] + likes};
- record.put(user, dataLikes);
- }
- break;
- case "Comment":
- String uname = tokens[1];
- if(!record.containsKey(uname)){
- int[] dataComments = {0, 1};
- record.put(uname, dataComments);
- }else{
- int[] dataLikes = {record.get(uname)[0] + 1, record.get(uname)[1]};
- record.put(uname, dataLikes);
- }
- break;
- case "Blocked":
- String blockedUser = tokens[1];
- if(!record.containsKey(blockedUser)){
- System.out.println(blockedUser + " doesn't exist.");
- }else {
- record.remove(blockedUser);
- }
- break;
- }
- }
- System.out.println(record.size() + " followers");
- record = record
- .entrySet()
- .stream()
- .sorted(Map.Entry.comparingByKey((Comparator.reverseOrder())))
- .sorted((a,b) ->{
- return b.getValue()[1] > a.getValue()[1] ? 0 : -1;
- })
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
- (newVal, oldVal) -> oldVal, LinkedHashMap::new));
- for (Map.Entry<String, int[]> user : record.entrySet()) {
- int total = user.getValue()[0] + user.getValue()[1];
- System.out.printf("%s: %d\n", user.getKey(), total);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement