import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class Strain {
public static <T> List<T> keep(List<T> collection, Predicate<T> predicate) {
return filter(collection, predicate);
}
public static <T> List<T> discard(List<T> collection, Predicate<T> predicate) {
return filter(collection, predicate.negate());
}
public static <T> List<T> filter(List<T> collection, Predicate<T> predicate) {
List<T> filteredCollection = new ArrayList<>();
for (T item : collection) {
if (predicate.test(item)) {
filteredCollection.add(item);
}
}
return filteredCollection;
}
}