diff --git a/09-java-generics-collections/task03/src/com/example/task03/Task03Main.java b/09-java-generics-collections/task03/src/com/example/task03/Task03Main.java index d24f74023..a008aba77 100644 --- a/09-java-generics-collections/task03/src/com/example/task03/Task03Main.java +++ b/09-java-generics-collections/task03/src/com/example/task03/Task03Main.java @@ -1,24 +1,45 @@ package com.example.task03; - import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.util.List; import java.util.Set; +import java.io.*; +import java.util.*; +import java.util.stream.Collectors; -public class Task03Main { - - public static void main(String[] args) throws IOException { +public class Task03Main +{ + public static void main(String[] args) throws IOException + { List> anagrams = findAnagrams(new FileInputStream("task03/resources/singular.txt"), Charset.forName("windows-1251")); - for (Set anagram : anagrams) { + for (Set anagram : anagrams) + { System.out.println(anagram); } - } - public static List> findAnagrams(InputStream inputStream, Charset charset) { + public static List> findAnagrams(InputStream inputStream, Charset charset) + { return null; + Map> anagrams = new TreeMap<>(); + + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, charset))) + { + bufferedReader.lines().map(String::toLowerCase).filter(s -> s.length() >= 3 && s.matches("[а-я]*")).forEach(s -> + { + char[] ch = s.toCharArray(); + Arrays.sort(ch); + String sortedLetters = new String(ch); + anagrams.computeIfAbsent(sortedLetters, k -> new TreeSet<>()).add(s); + }); + } + catch (Exception e) + { + e.printStackTrace(); + } + return anagrams.values().stream().filter(l -> l.size() >= 2).collect(Collectors.toList()); } }