public interface FruitFilter<T> { boolean filter(T t);}
public static void main(String[] args) { List<Apple> apples = Arrays.asList( new Apple("green", 150, true), new Apple("white", 200, false), new Apple("blue", 100, true) ); List<Apple> filter = filter(apples, apple -> "green".equals(apple.getColor())); filter.forEach(System.out::println);} public static <T> List<T> filter(List<T> list, FruitFilter<T> fruitFilter) { List<T> result = new ArrayList<>(); for (T t : list) { if (fruitFilter.filter(t)) { result.add(t); } } return result; }