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