1. public interface FruitFilter<T> {
    2. boolean filter(T t);
    3. }
    1. public static void main(String[] args) {
    2. List<Apple> apples = Arrays.asList(
    3. new Apple("green", 150, true),
    4. new Apple("white", 200, false),
    5. new Apple("blue", 100, true)
    6. );
    7. List<Apple> filter = filter(apples, apple -> "green".equals(apple.getColor()));
    8. filter.forEach(System.out::println);
    9. }
    10. public static <T> List<T> filter(List<T> list, FruitFilter<T> fruitFilter) {
    11. List<T> result = new ArrayList<>();
    12. for (T t : list) {
    13. if (fruitFilter.filter(t)) {
    14. result.add(t);
    15. }
    16. }
    17. return result;
    18. }