fork(15) download
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.List;
  5. import java.util.ArrayList;
  6.  
  7. /**
  8.  Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации
  9.  подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое
  10.  программе на вход в качестве аргумента.
  11.  */
  12. class Grep {
  13.  
  14. public static List<String> arrays() throws IOException {
  15. List<String> array = new ArrayList<>(); // diamond-оператор
  16.  
  17. String s;
  18. while ((s = reader.readLine()) != null) { // присваиваем и проверяем в одной строчке, плюс защита от NullPointerException
  19. array.add(s.toLowerCase());
  20. }
  21. reader.close(); // не забываем закрыть
  22.  
  23. return array;
  24. }
  25.  
  26. // используем более абстрактные типы
  27. public static List<String> method(String s, List<String> list) {
  28. for (int i = 0; i < list.size(); i++) {
  29. if (!list.get(i).contains(s)) {
  30. list.remove(i); // удаляем ненужный элемент, список смещается на пустое место
  31. i--; // для того, чтобы остаться на том же индексе в следующей итерации
  32. }
  33. }
  34. return list;
  35. }
  36.  
  37. public static void main(String[] args) throws IOException {
  38. for (String s : method("двач", arrays())) {
  39. System.out.println(s);
  40. }
  41. // ещё можно в стиле Java 8
  42. //method("двач", arrays()).forEach(System.out::println);
  43. }
  44. }
  45.  
Success #stdin #stdout 0.1s 320576KB
stdin
двач привет
есть одна тян
двач двач двач абу абу абу
stdout
двач привет
двач двач двач абу абу абу