ADd realizations

This commit is contained in:
2026-01-21 14:02:51 +03:00
parent 5d0e7d3640
commit 60640b386d
7 changed files with 125 additions and 5 deletions

View File

@@ -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<String, Integer> countWords(String text) {
String[] words = text.split(" ");
Map<String, Integer> wordsCount = new HashMap<>();
for(String word : words) {
word = word.toLowerCase();
int wordCount = wordsCount.getOrDefault(word, 0);
wordsCount.put(word, wordCount + 1);
}
return wordsCount;
}
}

View File

@@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j;
public class MainTest { public class MainTest {
public static void main(String[] args) { public static void main(String[] args) {
PhoneBook phoneBook = null; PhoneBook phoneBook = new PhoneBookImpl();
phoneBook.addContact("Ivan", "+1 (234) 567 89 10"); phoneBook.addContact("Ivan", "+1 (234) 567 89 10");
phoneBook.addContact("Dima", "+3 (456) 789 10 11"); phoneBook.addContact("Dima", "+3 (456) 789 10 11");

View File

@@ -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<String, String> 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);
}
}

View File

@@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j;
public class MainTest { public class MainTest {
public static void main(String[] args) { public static void main(String[] args) {
SimpleTranslator simpleTranslator = null; SimpleTranslator simpleTranslator = new SimpleTranslatorImpl();
simpleTranslator.addWordTranslate("подборка", "selection"); simpleTranslator.addWordTranslate("подборка", "selection");
simpleTranslator.addWordTranslate("практических", "practical"); simpleTranslator.addWordTranslate("практических", "practical");

View File

@@ -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<String, String> 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(" "));
}
}

View File

@@ -9,9 +9,10 @@ import java.util.Map;
public class MainTest { public class MainTest {
public static void main(String[] args) { public static void main(String[] args) {
SchoolJournal schoolJournal = null; SchoolJournal schoolJournal = new SchoolJournalImpl();
schoolJournal.addScore("Ivan", 4); schoolJournal.addScore("Ivan", 4);
schoolJournal.addScore("Ivan", 5);
schoolJournal.addScores("Andrey", List.of(3, 4, 4)); schoolJournal.addScores("Andrey", List.of(3, 4, 4));
schoolJournal.addScores("Maria", List.of(5, 5, 4, 5, 4)); schoolJournal.addScores("Maria", List.of(5, 5, 4, 5, 4));
schoolJournal.addScores("Dima", List.of(4, 5, 3, 5, 5)); schoolJournal.addScores("Dima", List.of(4, 5, 3, 5, 5));
@@ -21,10 +22,10 @@ public class MainTest {
log.info("Average students scores: {}", averagesScores); log.info("Average students scores: {}", averagesScores);
List<String> students1 = schoolJournal.studentsWithAverageScoreHighThen(4.5f); List<String> 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<String> students2 = schoolJournal.studentsWithAverageScoreHighThen(3); List<String> students2 = schoolJournal.studentsWithAverageScoreHighThen(3);
log.info("Students with average score high then 3:{}", students2); log.info("Students with average score high then 3: {}", students2);
} }
} }

View File

@@ -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<String, List<Integer>> 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<Integer> scores) {
studentsScores.computeIfAbsent(name, k -> new LinkedList<>()).addAll(scores);
}
@Override
public Map<String, Float> getAverageScorePerStudent() {
Map<String, Float> averageScores = new HashMap<>();
for (Map.Entry<String, List<Integer>> entry : studentsScores.entrySet()) {
String name = entry.getKey();
List<Integer> 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<Integer> scores = e.getValue();
// int scoresSum = scores.stream().mapToInt(s -> s).sum();
// return (float) scoresSum / scores.size();
// }));
}
@Override
public List<String> studentsWithAverageScoreHighThen(float averageScore) {
return getAverageScorePerStudent().entrySet().stream()
.filter(e -> e.getValue() >= averageScore)
.map(Map.Entry::getKey)
.toList();
}
}