/
ZufarFaiz
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
ZufarFaiz
/
SberJavaCourseBeginner
Код
Запросы
5
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
hw_3
TextHandling/TextHandler.java
43 строки
2 KB
Семейный
Изменил TextHandler добавил паттерн который обрабатывает слова в тексте, также улучшил сортировку через sublist()
04 май 2025, 00:43
04 май 2025, 00:43
7c7a514
Код
Авторство
О чём код?
package TextHandling; import java.util.*; import java.util.regex.MatchResult; import java.util.regex.Pattern; import java.util.stream.IntStream; public class TextHandler { public static void main(String[] args) { System.out.println("Введите текст"); Scanner sc = new Scanner(System.in); Map<String, Integer> map = addWords(sc); List<Map.Entry<String, Integer>> listMinWords = sortedWords(map).subList(0,Math.min(5,map.size())); List<Map.Entry<String, Integer>> listMaxWords = sortedWords(map).subList(Math.max(0,map.size()-5),map.size()); Collections.reverse(listMaxWords); System.out.println("Самые частые:"); printList(listMaxWords); System.out.println("Самые редкие:"); printList(listMinWords); } private static Map<String, Integer> addWords(Scanner sc) { Map<String, Integer> wordCounts = new LinkedHashMap<>(); Pattern.compile("\\b[\\p{L}&&\\p{IsAlphabetic}]+\\b", Pattern.UNICODE_CHARACTER_CLASS) .matcher(sc.nextLine().toLowerCase()) .results() .map(MatchResult::group) .forEach(word -> wordCounts.merge(word, 1, Integer::sum)); return wordCounts; } private static List<Map.Entry<String, Integer>> sortedWords(Map<String, Integer> map) { List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); list.sort(Map.Entry.comparingByValue()); return list; } private static void printList(List<Map.Entry<String, Integer>> list) { IntStream.range(0, Math.min(5,list.size())).mapToObj(i -> list.get(i).getKey() + " - " + list.get(i).getValue()).forEach(System.out::println); } }