From 60640b386dff7ac3f3e87b80db684a20b68e1b5f Mon Sep 17 00:00:00 2001 From: Falmer Date: Wed, 21 Jan 2026 14:02:51 +0300 Subject: [PATCH] ADd realizations --- .../ilug/c1_word_counter/WordCounterImpl.java | 21 ++++++++ .../java/ru/ilug/c2_phone_book/MainTest.java | 2 +- .../ru/ilug/c2_phone_book/PhoneBookImpl.java | 24 +++++++++ .../ilug/c3_simple_translator/MainTest.java | 2 +- .../SimpleTranslatorImpl.java | 24 +++++++++ .../ru/ilug/c4_school_journal/MainTest.java | 7 +-- .../c4_school_journal/SchoolJournalImpl.java | 50 +++++++++++++++++++ 7 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 src/main/java/ru/ilug/c1_word_counter/WordCounterImpl.java create mode 100644 src/main/java/ru/ilug/c2_phone_book/PhoneBookImpl.java create mode 100644 src/main/java/ru/ilug/c3_simple_translator/SimpleTranslatorImpl.java create mode 100644 src/main/java/ru/ilug/c4_school_journal/SchoolJournalImpl.java diff --git a/src/main/java/ru/ilug/c1_word_counter/WordCounterImpl.java b/src/main/java/ru/ilug/c1_word_counter/WordCounterImpl.java new file mode 100644 index 0000000..4ba4a7d --- /dev/null +++ b/src/main/java/ru/ilug/c1_word_counter/WordCounterImpl.java @@ -0,0 +1,21 @@ +package ru.ilug.c1_word_counter; + +import java.util.HashMap; +import java.util.Map; + +public class WordCounterImpl implements WordCounter { + @Override + public Map countWords(String text) { + String[] words = text.split(" "); + + Map wordsCount = new HashMap<>(); + + for(String word : words) { + word = word.toLowerCase(); + int wordCount = wordsCount.getOrDefault(word, 0); + wordsCount.put(word, wordCount + 1); + } + + return wordsCount; + } +} diff --git a/src/main/java/ru/ilug/c2_phone_book/MainTest.java b/src/main/java/ru/ilug/c2_phone_book/MainTest.java index ec6941d..b5d520a 100644 --- a/src/main/java/ru/ilug/c2_phone_book/MainTest.java +++ b/src/main/java/ru/ilug/c2_phone_book/MainTest.java @@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j; public class MainTest { public static void main(String[] args) { - PhoneBook phoneBook = null; + PhoneBook phoneBook = new PhoneBookImpl(); phoneBook.addContact("Ivan", "+1 (234) 567 89 10"); phoneBook.addContact("Dima", "+3 (456) 789 10 11"); diff --git a/src/main/java/ru/ilug/c2_phone_book/PhoneBookImpl.java b/src/main/java/ru/ilug/c2_phone_book/PhoneBookImpl.java new file mode 100644 index 0000000..1ac749a --- /dev/null +++ b/src/main/java/ru/ilug/c2_phone_book/PhoneBookImpl.java @@ -0,0 +1,24 @@ +package ru.ilug.c2_phone_book; + +import java.util.HashMap; +import java.util.Map; + +public class PhoneBookImpl implements PhoneBook { + + private final Map contacts = new HashMap<>(); + + @Override + public void addContact(String name, String phone) { + contacts.put(name, phone); + } + + @Override + public String findPhoneByName(String name) { + return contacts.get(name); + } + + @Override + public void removeContactByName(String name) { + contacts.remove(name); + } +} diff --git a/src/main/java/ru/ilug/c3_simple_translator/MainTest.java b/src/main/java/ru/ilug/c3_simple_translator/MainTest.java index 31e3e93..1a2ebe4 100644 --- a/src/main/java/ru/ilug/c3_simple_translator/MainTest.java +++ b/src/main/java/ru/ilug/c3_simple_translator/MainTest.java @@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j; public class MainTest { public static void main(String[] args) { - SimpleTranslator simpleTranslator = null; + SimpleTranslator simpleTranslator = new SimpleTranslatorImpl(); simpleTranslator.addWordTranslate("подборка", "selection"); simpleTranslator.addWordTranslate("практических", "practical"); diff --git a/src/main/java/ru/ilug/c3_simple_translator/SimpleTranslatorImpl.java b/src/main/java/ru/ilug/c3_simple_translator/SimpleTranslatorImpl.java new file mode 100644 index 0000000..993d46a --- /dev/null +++ b/src/main/java/ru/ilug/c3_simple_translator/SimpleTranslatorImpl.java @@ -0,0 +1,24 @@ +package ru.ilug.c3_simple_translator; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +public class SimpleTranslatorImpl implements SimpleTranslator { + + private final Map wordsTranslate = new HashMap<>(); + + @Override + public void addWordTranslate(String word, String translate) { + wordsTranslate.put(word.toLowerCase(), translate.toLowerCase()); + } + + @Override + public String translate(String text) { + return Arrays.stream(text.split(" ")) + .map(w -> wordsTranslate.getOrDefault(w.toLowerCase(), w)) + .collect(Collectors.joining(" ")); + } + +} diff --git a/src/main/java/ru/ilug/c4_school_journal/MainTest.java b/src/main/java/ru/ilug/c4_school_journal/MainTest.java index c07909c..04848ed 100644 --- a/src/main/java/ru/ilug/c4_school_journal/MainTest.java +++ b/src/main/java/ru/ilug/c4_school_journal/MainTest.java @@ -9,9 +9,10 @@ import java.util.Map; public class MainTest { public static void main(String[] args) { - SchoolJournal schoolJournal = null; + SchoolJournal schoolJournal = new SchoolJournalImpl(); schoolJournal.addScore("Ivan", 4); + schoolJournal.addScore("Ivan", 5); schoolJournal.addScores("Andrey", List.of(3, 4, 4)); schoolJournal.addScores("Maria", List.of(5, 5, 4, 5, 4)); schoolJournal.addScores("Dima", List.of(4, 5, 3, 5, 5)); @@ -21,10 +22,10 @@ public class MainTest { log.info("Average students scores: {}", averagesScores); List students1 = schoolJournal.studentsWithAverageScoreHighThen(4.5f); - log.info("Students with average score high then 4.5:{}", students1); + log.info("Students with average score high then 4.5: {}", students1); List students2 = schoolJournal.studentsWithAverageScoreHighThen(3); - log.info("Students with average score high then 3:{}", students2); + log.info("Students with average score high then 3: {}", students2); } } diff --git a/src/main/java/ru/ilug/c4_school_journal/SchoolJournalImpl.java b/src/main/java/ru/ilug/c4_school_journal/SchoolJournalImpl.java new file mode 100644 index 0000000..75391cd --- /dev/null +++ b/src/main/java/ru/ilug/c4_school_journal/SchoolJournalImpl.java @@ -0,0 +1,50 @@ +package ru.ilug.c4_school_journal; + +import java.util.*; +import java.util.stream.Collectors; + +public class SchoolJournalImpl implements SchoolJournal { + + private final Map> studentsScores = new HashMap<>(); + + @Override + public void addScore(String name, int score) { + studentsScores.computeIfAbsent(name, k -> new LinkedList<>()).add(score); + } + + @Override + public void addScores(String name, Collection scores) { + studentsScores.computeIfAbsent(name, k -> new LinkedList<>()).addAll(scores); + } + + @Override + public Map getAverageScorePerStudent() { + Map averageScores = new HashMap<>(); + + for (Map.Entry> entry : studentsScores.entrySet()) { + String name = entry.getKey(); + List scores = entry.getValue(); + + float averageScore = (float) scores.stream().mapToInt(s -> s).average().orElse(0f); + + averageScores.put(name, averageScore); + } + + return averageScores; + +// return studentsScores.entrySet().stream() +// .collect(Collectors.toMap(Map.Entry::getKey, e -> { +// List scores = e.getValue(); +// int scoresSum = scores.stream().mapToInt(s -> s).sum(); +// return (float) scoresSum / scores.size(); +// })); + } + + @Override + public List studentsWithAverageScoreHighThen(float averageScore) { + return getAverageScorePerStudent().entrySet().stream() + .filter(e -> e.getValue() >= averageScore) + .map(Map.Entry::getKey) + .toList(); + } +}