java函数式编程

1,定义函数式接口

java 复制代码
package com.xingyuezhiyun.practice.lambada;

@FunctionalInterface
public interface PickerSelector<T extends Fruit> {

    boolean pick(T fruit);
}

2,提供处理函数并调用

java 复制代码
package com.xingyuezhiyun.practice.lambada;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

public static void main(String [] args) {
        List<Fruit> fruitList = Arrays.asList(new Fruit("aaa", "red"){}, new Fruit("bbb", "blue"){});

        System.out.println(pickFruit(fruitList, new RedInstance()));
        System.out.println(pickFruit(fruitList, new BlueInstance()));
        System.out.println(pickFruit(fruitList, fruit -> fruit.getColor().equals("red")));

    }

public static List<Fruit> pickFruit(List<Fruit> fruitList, PickerSelector<Fruit> pickerSelector){
        List<Fruit> result = new ArrayList<>();
        fruitList.forEach(fruit -> {
            if (pickerSelector.pick(fruit)){
                result.add(fruit);
            }
        });
        
        return result;
    }
}

函数式接口 函数描述符

java 复制代码
Predicate<T>	  (T)  -> boolean
Consumer<T>	  (T)  -> void
Function< T, R >	  (T)  -> R
Supplier<T>	  ( )  -> T
UnaryOperator<T> 	  (T)  ->  T 
BinaryOperator<T>	  (T, T) -> T
BiPredicate<L, R>	  (L, R)  -> boolean
BiConsumer<T, U>	  (T, U)  -> void
BiFunction<T, U, R>	  (T, U)  -> R
相关推荐
文丑颜不良啊23 分钟前
LeetCode2901~2920题目解析
java·leetcode
码云社区25 分钟前
能碳管理系统开发要关注什么?能源数据、统计口径与AI分析的衔接
java·人工智能·ai·能源·能源管理系统·能碳管理系统·能碳管理系统源码
Flynn Liang1 小时前
Agentic 工作流:子代理、Supervisor 与人工介入
java·langchain·多智能体·supervisor·agentic·langchain4j
xys_6781 小时前
JavaSE通关手册:运算符
java·java-ee
starzy19901 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克6051 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
吴可可1232 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
jyOverQ2 小时前
从零学 JVM(七):垃圾收集器详解——Serial、ParNew、Parallel、CMS 与 G1
java·jvm
liangbo72 小时前
Spring系列11:切点表达式
java·spring
3095566662 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口