From 895a02239e467571df9ff09c86f05fd1d83ea72a Mon Sep 17 00:00:00 2001 From: "Task-1.1" Date: Sun, 27 Dec 2020 09:51:52 +0500 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D0=B6=D0=BA=D0=BE=D0=B2=20=D0=9A?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8F=20=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=209.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/example/task03/Task03Main.java | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) 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()); } }