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
相关推荐
Qimooidea7 分钟前
祁木 CAD Translator 深度评测:从参数解析到工程交付实战
java·开发语言·人工智能·机器翻译
小白学大数据19 分钟前
企业内网场景下 Python 自定义 CA 证书信任链的正确配置方法
开发语言·网络·python·信任链
Java面试题总结31 分钟前
使用 Python 在 Excel 中添加和自定义文本框
开发语言·python·excel
我登哥MVP35 分钟前
走进 Gang of Four 设计模式:解释器模式
java·设计模式·解释器模式
智码看视界37 分钟前
Tomcat架构深度拆解:Connector和Container到底怎么配合的?
java·servlet·架构·tomcat·web服务器
浪客川37 分钟前
idea 技巧 region 的使用
java·ide·intellij-idea
geovindu43 分钟前
CSharp: Recursion Algorithm
开发语言·后端·算法·c#·递归算法
dsyyyyy11011 小时前
用JavaScript实现排序算法
开发语言·javascript·排序算法
CHANG_THE_WORLD1 小时前
逐层拆解:C++ 虚函数从对象内存到手工调用的完整过程
java·开发语言·c++
我登哥MVP1 小时前
走进 Gang of Four 设计模式:过滤器模式
java·设计模式·过滤器模式