廖雪峰Java16函数式编程-1Lambda表达式-1Lambda基础

1. 函数式编程

Java有2类方法:

  • 实例方法:通过实例调用
  • 静态方法:通过类名调用
  • Java的方法相当于过程式语言的函数

函数式编程(Functional Programing):

  • 把函数作为基本运算单元
  • 函数可以作为变量,传递给另一个函数
  • 函数可以接收函数
  • 函数可以返回函数

历史研究函数式编程的理论是Lambda演算,所以把支持函数式编程的风格成为Lambda表达式

2. Java的单方法接口

在Java中,有许多接口只定义了1个方法:

  • Comparator
  • Runnable
  • Callable
  • 只定义了单个抽象方法的接口,可以被标注为@FunctionalInterface
    1418970-20190905194046352-639120403.png

3. Java的Lambda表达式:

  • JDK >= 1.8
  • 简化语法 不再需要匿名类的定义
  • 类型自动推断(编译器自动完成) 不需要在方法中声明参数类型
    * 如Comparator接口传入的参数是2个String类型,可以省略;返回1个int类型,也可以省略。
    使用匿名类方式实现一个单方法接口的时候,代码比较繁琐,需要覆写这个方法,而使用Lambda表达式的时候,我们可以大大的简化语法。()表示参数,->{}表示方法过程
    以Comparator为例:
    1418970-20190905192657382-220233199.jpg

    4. 代码示例

package csj2019;

import java.util.Arrays;
import java.util.Comparator;

public class LambdaSimple {
    public static void main(String[] args) throws Exception{
        String[] words = "Improving code with Lambda expression In Java".split(" ");
/**        Arrays.sort(words, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.toLowerCase().compareTo(o2.toLowerCase());
            }
        });
        System.out.println(Arrays.toString(words)); */
        Arrays.sort(words,(s1,s2)->{
            return s1.toLowerCase().compareTo(s2.toLowerCase());
        });
        System.out.println(Arrays.toString(words));
    }
}

1418970-20190905194302576-1726929534.png

5. 总结:

  • Java8引入了Lambda语法,用以简化单抽象方法接口的实现
  • Lambda语法实现了类型自动推断
  • 单抽象方法接口被成为函数式接口

转载于:https://www.cnblogs.com/csj2018/p/11462764.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值