diff --git "a/src/com/school/faang/hashmap/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" "b/src/com/school/faang/hashmap/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" index 57b651f..3bee3b3 100644 --- "a/src/com/school/faang/hashmap/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" +++ "b/src/com/school/faang/hashmap/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" @@ -1,7 +1,101 @@ package com.school.faang.hashmap.задача_6; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class Solution { public static void main(String[] args) { + List tweets = new ArrayList<>(); + + tweets.add(new Tweet("@anna", List.of("#java", "#programming"))); + tweets.add(new Tweet("@ivan", List.of("#java"))); + tweets.add(new Tweet("@anna", List.of("#java"))); + tweets.add(new Tweet("@anna", List.of("#java", "#programming","#sql"))); + tweets.add(new Tweet("@ivan", List.of("#programming", "java"))); + tweets.add(new Tweet("@ivan", List.of("#java", "#programming"))); + + Tweet tweet = new Tweet(); + + Map topAuthors = tweet.findTopAuthors(tweets); + + for (Map.Entry entry : topAuthors.entrySet()) { + String hashtag = entry.getKey(); + String author = entry.getValue(); + + System.out.println("Больше постов с хештегом " + hashtag + " написал " + author); + } + } +} + +class Tweet { + private String author; + private List hashtags; + + public Tweet (String author, List hashtags) { + this.author = author; + this.hashtags = hashtags; + } + + public Tweet () {} + + private String getAuthor() { + return author; + } + + private List getHashtags() { + return hashtags; + } + + public Map findTopAuthors(List tweets) { + Map topAuthors = new HashMap<>(); + + Map> authorsHashtagCounter = authorsHashtagCounter(tweets); + + for (Map.Entry> entry : authorsHashtagCounter.entrySet()) { + String hashtag = entry.getKey(); + Map authorsHashtagsCounter = entry.getValue(); + + int maxTweet = 0; + String topAuthorName = ""; + + for (Map.Entry innerEntry : authorsHashtagsCounter.entrySet()) { + + String authorName = innerEntry.getKey(); + int tweetCount = innerEntry.getValue(); + + if (tweetCount > maxTweet) { + maxTweet = tweetCount; + topAuthorName = authorName; + } + } + + topAuthors.put(hashtag, topAuthorName); + } + + return topAuthors; + } + + private Map> authorsHashtagCounter(List tweets) { + Map> hashtagsCounter = new HashMap<>(); + + for (Tweet tweet : tweets) { + String name = tweet.getAuthor(); + + for (String hashtag : tweet.getHashtags()) { + Map hashtagFrequency = hashtagsCounter.get(hashtag); + + if (hashtagsCounter.containsKey(hashtag)) { + hashtagFrequency.put(name, hashtagFrequency.getOrDefault(name, 0) + 1); + }else { + hashtagFrequency = new HashMap<>(); + hashtagFrequency.put(name, 1); + hashtagsCounter.put(hashtag, hashtagFrequency); + } + } + } + return hashtagsCounter; } }