import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
/**
Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации
подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое
программе на вход в качестве аргумента.
*/
class Grep {
public static List
<String
> arrays
() throws IOException { List<String> array = new ArrayList<>(); // diamond-оператор
while ((s = reader.readLine()) != null) { // присваиваем и проверяем в одной строчке, плюс защита от NullPointerException
array.add(s.toLowerCase());
}
reader.close(); // не забываем закрыть
return array;
}
// используем более абстрактные типы
public static List
<String
> method
(String s, List
<String
> list
) { for (int i = 0; i < list.size(); i++) {
if (!list.get(i).contains(s)) {
list.remove(i); // удаляем ненужный элемент, список смещается на пустое место
i--; // для того, чтобы остаться на том же индексе в следующей итерации
}
}
return list;
}
for (String s
: method
("двач", arrays
())) { }
// ещё можно в стиле Java 8
//method("двач", arrays()).forEach(System.out::println);
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKCi8qKgog0J3QtdC+0LHRhdC+0LTQuNC80L4g0YDQtdCw0LvQuNC30L7QstCw0YLRjCDQutC+0L3RgdC+0LvRjNC90YPRjiDQv9GA0L7Qs9GA0LDQvNC80YMsINC60L7RgtC+0YDQsNGPINCx0Ysg0YTQuNC70YzRgtGA0L7QstCw0LvQsCDQv9C+0YLQvtC6INGC0LXQutGB0YLQvtCy0L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQuAog0L/QvtC00LDQstCw0LXQvNC+0Lkg0L3QsCDQstGF0L7QtCDQuCDQvdCwINCy0YvRhdC+0LTQtSDQv9C+0LrQsNC30YvQstCw0LvQsCDQu9C40YjRjCDRgtC1INGB0YLRgNC+0YfQutC4LCDQutC+0YLQvtGA0YvQtSDRgdC+0LTQtdGA0LbQsNGCINGB0LvQvtCy0L4g0L/QtdGA0LXQtNCw0LLQsNC10LzQvtC1CiDQv9GA0L7Qs9GA0LDQvNC80LUg0L3QsCDQstGF0L7QtCDQsiDQutCw0YfQtdGB0YLQstC1INCw0YDQs9GD0LzQtdC90YLQsC4KICovCmNsYXNzIEdyZXAgewoKCXB1YmxpYyBzdGF0aWMgTGlzdDxTdHJpbmc+IGFycmF5cygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CgkJQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKCQlMaXN0PFN0cmluZz4gYXJyYXkgPSBuZXcgQXJyYXlMaXN0PD4oKTsgLy8gZGlhbW9uZC3QvtC/0LXRgNCw0YLQvtGACgkJCgkJU3RyaW5nIHM7CgkJd2hpbGUgKChzID0gcmVhZGVyLnJlYWRMaW5lKCkpICE9IG51bGwpIHsgLy8g0L/RgNC40YHQstCw0LjQstCw0LXQvCDQuCDQv9GA0L7QstC10YDRj9C10Lwg0LIg0L7QtNC90L7QuSDRgdGC0YDQvtGH0LrQtSwg0L/Qu9GO0YEg0LfQsNGJ0LjRgtCwINC+0YIgTnVsbFBvaW50ZXJFeGNlcHRpb24KCQkJYXJyYXkuYWRkKHMudG9Mb3dlckNhc2UoKSk7CgkJfQogICAgCXJlYWRlci5jbG9zZSgpOyAvLyDQvdC1INC30LDQsdGL0LLQsNC10Lwg0LfQsNC60YDRi9GC0YwKCQkKCQlyZXR1cm4gYXJyYXk7CiAgICB9CgoJLy8g0LjRgdC/0L7Qu9GM0LfRg9C10Lwg0LHQvtC70LXQtSDQsNCx0YHRgtGA0LDQutGC0L3Ri9C1INGC0LjQv9GLCglwdWJsaWMgc3RhdGljIExpc3Q8U3RyaW5nPiBtZXRob2QoU3RyaW5nIHMsIExpc3Q8U3RyaW5nPiBsaXN0KSB7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CgkJCWlmICghbGlzdC5nZXQoaSkuY29udGFpbnMocykpIHsKCQkJCWxpc3QucmVtb3ZlKGkpOyAvLyDRg9C00LDQu9GP0LXQvCDQvdC10L3Rg9C20L3Ri9C5INGN0LvQtdC80LXQvdGCLCDRgdC/0LjRgdC+0Log0YHQvNC10YnQsNC10YLRgdGPINC90LAg0L/Rg9GB0YLQvtC1INC80LXRgdGC0L4KCQkJCWktLTsgLy8g0LTQu9GPINGC0L7Qs9C+LCDRh9GC0L7QsdGLINC+0YHRgtCw0YLRjNGB0Y8g0L3QsCDRgtC+0Lwg0LbQtSDQuNC90LTQtdC60YHQtSDQsiDRgdC70LXQtNGD0Y7RidC10Lkg0LjRgtC10YDQsNGG0LjQuAoJCQl9CgkJfQoJCXJldHVybiBsaXN0OwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiB7CgkJZm9yIChTdHJpbmcgcyA6IG1ldGhvZCgi0LTQstCw0YciLCBhcnJheXMoKSkpIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKHMpOwoJCX0KCQkvLyDQtdGJ0ZEg0LzQvtC20L3QviDQsiDRgdGC0LjQu9C1IEphdmEgOAoJCS8vbWV0aG9kKCLQtNCy0LDRhyIsIGFycmF5cygpKS5mb3JFYWNoKFN5c3RlbS5vdXQ6OnByaW50bG4pOwoJfQp9Cg==