Lambda表达式

本文介绍了为何要学习函数式编程,强调其代码简洁、处理效率高和可读性强的优点。通过Lambda表达式这一JDK8的新特性,展示了如何简化匿名内部类的写法,使代码更关注数据操作而非对象本身。文中通过三个实例详细解释了Lambda的基本格式、核心原则及省略规则,帮助读者掌握Lambda的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

1.1 为什么学?

  • 能够看懂公司里的代码
  • 大数量下处理集合效率高
  • 代码可读性高
  • 消灭嵌套地狱

1.2 函数式编程思想

主要关注的是对数据进行了什么操作

1.2.1优点
  • 代码简洁 开发快速
  • 接近自然语言 易于理解
  • 易于“并发编程”

2.Lambda表达式

2.1概述

Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要休现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。

2.2 核心原则

可推导可省略

2.3 基本格式

(参数列表)->{代码}
例一
package cn.qzit.test;

import java.util.function.IntBinaryOperator;

public class Lambda1 {
    public static void main(String[] args) {
        // lambda表达式
        int i=calculate((left, right) -> left + right);
        System.out.println(i);

        /*   普通代码
        int i=calculate(new IntBinaryOperator() {
            @Override
            public int applyAsInt(int left, int right) {
                return left + right;
            }
        });
        System.out.println(i);   */
    }
    public static int calculate(IntBinaryOperator operator){
        int a=10;
        int b=20;
        return operator.applyAsInt(a,b);
    }

}

例二
package cn.qzit.test;

import java.util.function.IntPredicate;

public class Lambda2 {
    public static void main(String[] args) {
       //普通写法
        printNum(new IntPredicate() {
            @Override
            public boolean test(int value) {
                return value%2==0;
            }
        });
        //lambda写法
        printNum((int value) ->{return value%2==0;});
        printNum((int value) -> value%2==0);
        printNum(value -> value%2==0);
    }
    public static void printNum(IntPredicate predicate){
        int[] arr={1,2,3,4,5,6,7,8,9};
        for (int i: arr) {
            if(predicate.test(i)){
                System.out.println(i);
            }
        }
    }
}

例三
package cn.qzit.test;

import java.util.function.Function;
import java.util.function.IntPredicate;

public class Lambda3 {
    public static void main(String[] args) {
       //普通写法
        Integer integer = typeConver(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.valueOf(s);
            }
        });
        System.out.println(integer);
        //lambda写法
        Integer integer1 = typeConver(s -> Integer.valueOf(s));
        System.out.println(integer1);

    }
    public static <R> R typeConver(Function<String,R> function){
        String str="1235";
        R apply = function.apply(str);
        return apply;
    }
}

2.4 省略规则

  • 参数类型可以省略
  • 方法只有一句代码大括号return和唯一一句代码的分号可以省略
  • 方法只有一个参数时小括号可以省略
  • 也可以不记 alt+enter
       //lambda写法
        printNum((int value) ->{return value%2==0;});
        printNum((value) -> value%2==0);
        printNum(value -> value%2==0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值