diff --git "a/src/com/school/faang/hashset/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" "b/src/com/school/faang/hashset/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" index 063689d..422eb76 100644 --- "a/src/com/school/faang/hashset/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" +++ "b/src/com/school/faang/hashset/\320\267\320\260\320\264\320\260\321\207\320\260_6/Solution.java" @@ -1,7 +1,53 @@ package com.school.faang.hashset.задача_6; +import java.util.*; + public class Solution { + static class RecommendationEngine { + private HashMap> videosByChannel; + + public RecommendationEngine(HashMap> videosByChannel) { + this.videosByChannel = videosByChannel; + } + + void addVideo(String channelName, String videoTitle) { + if (videosByChannel.containsKey(channelName)) { + videosByChannel.get(channelName).add(videoTitle); + } + else { + videosByChannel.put(channelName, new HashSet<>(List.of(videoTitle))); + } + } + + HashSet getVideos(String channelName) { + return videosByChannel.get(channelName); + } + } + + public List generateFeed(HashSet subscriptions, HashSet watchHistory, RecommendationEngine engine) { + + HashSet recommendations = new HashSet<>(); + + for (String channel : subscriptions) { + recommendations.addAll(engine.getVideos(channel)); + } + + recommendations.removeAll(watchHistory); + + ArrayList finalSeed = new ArrayList<>(recommendations); + Collections.shuffle(finalSeed); + + return finalSeed; + } public static void main(String[] args) { + Solution solution = new Solution(); + RecommendationEngine engine = new RecommendationEngine(new HashMap<>()); + engine.addVideo("MrBeast","100 людей в кругу"); + engine.addVideo("Собака","Один день из моей жизни"); + engine.addVideo("MrBeast", "7 дней на плоту"); + engine.addVideo("FAANG School", "HashMap в Java"); + engine.addVideo("FAANG School", "HashSet в Java"); + System.out.println(solution.generateFeed(new HashSet<>(engine.videosByChannel.keySet()), new HashSet<>(List.of("HashMap в Java")), engine)); } }