java 8 lambda 学习(一)

本文详细介绍了Java中Lambda表达式的不同形式及应用场景,包括无参、有参、代码块等形式,并探讨了函数接口如Predicate、Consumer等的使用方法。此外还讲解了类型推断和内部迭代的相关知识。

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

 

lambda的几种形式 

    Runnable a = () -> System.out.println("hello world");

    ActionListener b = event -> System.out.println("button action");

    Runnable c = () -> {

        System.out.println("hello");

        System.out.println("world");

    }

    BinaryOperator<Long>  d = (x,y) -> x+y;

    BinaryOperator<Long>  e = (long x , long y) -> x + y;

a 表达式 不包含参数 ,使用()表示没有参数,该表达式实现了Runnable接口,接口只有一个方法,返回void;

b 表达式 包含一个参数 可省略 ();

c 表达式 使用代码块表达;

d 表达式 d的类型是BinaryOperator 而不是x+y的和,等号右边是一个函数,参数类型由编译器推断;

e 表达式 指定参数类型;

lambda 表达式中的引用的(局部变量)是值而不是变量或既成事实上的final变量

String a = "aa";
Button b = new Button();
b.addActionListener(event -> System.out.print("aa"+a));

串a 没有改变 所以相当于final的 是即成事实上的final

但是如果改变a 所指向的对象;

String a = "aa";
a = "bb";
Button b = new Button();
b.addActionListener(event -> System.out.print("aa"+a));

编译器就会报错:variable used in lambda expression should be final or effiectively final.

所以lambda表达式也叫闭包(点击直接进入百度百科)。未赋值的变量与周边环境隔离起来,进而被绑定到一个特定的值。

函数接口:具有单个抽象方法的接口,用来表达lambda表达式的类型

接口参数返回类型示例
Predicate<T>Tboolean今天写博客了么
Consumer<T>Tvoid打印一段话
Funcation<T,R>TR枚举的valueof Map的get
Supplier<T>NullT工厂方法
UnaryOperator<T>TT逻辑非???
BinaryOperator<T>(T,T)T加减乘除

 

类型推断

Predicate<Integer> dd = x -> x>5;
if(dd.test(1)){}

上表达式可判断

BinaryOperator a = (x,y) -> x+y;

上表达式无范性 , 无法判断

内部迭代

java.util.List<Integer> aa = new ArrayList<>();
aa.add(55);
aa.add(44);
aa.add(1);
aa.add(2);
long count = aa.stream()
        .filter(i -> i>5)
        .count();
System.out.print(count);

找出List中大于5的数;

stream 该方法返回内部迭代的响应接口Stream

filter 过滤 指保留通过某项测试的对象 该函数返回 true 或 false

count 计算给定Stream里包含多少个对象。

转载于:https://my.oschina.net/haloooooo/blog/900624

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值