zoukankan      html  css  js  c++  java
  • 廖雪峰Java16函数式编程-1Lambda表达式-1Lambda基础

    1. 函数式编程

    Java有2类方法:

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

    函数式编程(Functional Programing):

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

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

    2. Java的单方法接口

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

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

    3. Java的Lambda表达式:

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

    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));
        }
    }
    

    5. 总结:

    • Java8引入了Lambda语法,用以简化单抽象方法接口的实现
    • Lambda语法实现了类型自动推断
    • 单抽象方法接口被成为函数式接口
  • 相关阅读:
    Apply SOA Design Patterns with WCF (1) Configuration Centralization (配置集中管理)
    NBearLite PetShop 4.0示例源码
    发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta
    NBear WebTest 分享一个基于Web的UnitTest工具
    Linux的rsh配置rhost
    [SCM]源码管理 perforce label实例
    python面试题
    LinuxTips目录下的所有的子目录
    perlcgi基础
    perlcgi命令行调试
  • 原文地址:https://www.cnblogs.com/csj2018/p/11462764.html
Copyright © 2011-2022 走看看