/
EugenyCh7
/
JavaAndScalaLessons
Обзор
Документация
Войти
/
EugenyCh7
/
JavaAndScalaLessons
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
JavaTest/src/ch7/ex7/Main.java
42 строки
2 KB
Eugeny Chekmarev
IDEA update
15 июн 2021, 21:11
15 июн 2021, 21:11
47fadf9
Код
Авторство
О чём код?
package ch7.ex7; import java.io.FileReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { String fileName = "The Little Prince.txt"; int minLength = 3; try { String text = Files.readString(Paths.get(fileName)); Map<String, Long> map = mapWords(text, minLength); System.out.printf("Всего уникальных слов: %d\n", map.keySet().size()); int topNumber = Math.min(map.keySet().size(), 10); List<Map.Entry<String, Long>> wordsList = sortedWordsByEntries(map); System.out.printf("Топ-%d слов минимальной длины %d:\n", topNumber, minLength); System.out.printf("%3s | %5s | %4s\n\n", "#", "Count", "Word"); for (int i = 0; i < topNumber; i++) { Map.Entry<String, Long> entry = wordsList.get(i); System.out.printf("%3d | %5d | %s\n", i + 1, entry.getValue(), entry.getKey()); } } catch (IOException ex) { System.out.printf("Ошибка чтения из файла:\n%s\n", ex.getMessage()); } } public static Map<String, Long> mapWords(String text, int minLength) { return Arrays.stream(text.split("[^\\pL']+")).parallel() .filter(s -> s.length() >= minLength) .collect(Collectors.groupingBy(String::toLowerCase, Collectors.counting())); } public static List<Map.Entry<String, Long>> sortedWordsByEntries(Map<String, Long> map) { List<Map.Entry<String, Long>> list = new ArrayList<>(map.entrySet()); list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue())); return list; } }