Смысл функционального программирования заключается в том, что функция должна рассматриваться как объект.
но вы знаете, функция (метод) не является объектом в Java. это отличается от JavaScript.
Итак, мы должны использовать интерфейс под названием Predicate.
List<Apple> apples = new ArrayList<>();
хочешь вес яблок набрать. первоначально,
List<Apple> weightApples = new ArrayList<>();
for(int i = 0; 9< apples.size(); i++){
if(apples.getWeight() > 10){
weightApples.add(apples.get(i));
}
}
этот код.
в функциональном программировании, функция будет «чистой функцией».
в чистой функции, вам следует избегать использования внешних переменных в функциях.
и нас не волнует логика функции в «строке с использованием функции»
сначала нам нужен интерфейс предиката.
interface Predicate<T>{
public boolean pass(T t);
}
в общем случае мы можем расширить тип объекта.
мы можем сделать фильтр.
public static <T> List<T> filter(List<T> list, Predicate<T> predicate){
List<T> result = new ArrayList<>();
for(T el : list){
if(predicate.pass(el)){
result.add(el);
}
}
return result;
}
pass () еще не реализован.
это может быть реализовано анонимным классом.
наконец, метод обрабатывается как объект, используя lamda!
filter(apples, (Apple apple) -> apple.getWeight()>10);
Я не человек по-английски, так что это плохой английский.
но я надеюсь, что это полезно для вас! спасибо.