array python lambda_不习惯Java的lambda表达式?看了python的我习惯了

Java早在1.8就支持lambda表达式了,虽然花时间研究学习过,可还是写的不太习惯。后来接手了一个python项目,自学了一遍python3,发现lambda确实挺友好的。

----先来看看在python中lambda表达式:p = lambda x:print(x)

p(10)

再来看一个简单的Java中lambda表达式:

Runnable r = () -> System.out.println("lambda");

----

貌似并没有什么差异,见的多,用的多自然就习惯了。Java中适用于lambda表达式的接口称之为函数式接口,显然Runnable是一个函数式接口:

509a31b69290011a29a027beaa433e3d.png

打了注解@FunctionalInterface的就是函数式接口了,注意函数式接口只能有一个抽象方法(否则如果有多个抽象方法,lambda表达式也不知道要实现的是哪一个,毕竟lambda本身就是代替匿名类)。

----

下面分享几个常用的lambda案例,lambda虽好也不要过度使用,如果lamdba语句块过长,还是建议直接写匿名类。

1.使用lambda简化线程,使用()->{}new Thread(new Runnable() {

@Override

public void run(){System.out.println();}

}).start();

new Thread(() -> System.out.println()).start();

2.使用lambda遍历集合

Arrays.asList("hello","java8","lamdba").forEach(System.out::println);

3.使用预判Predicate

List ageList = Arrays.asList(28,31,20);

Predicate gt30 = (n) -> n>30;

strList.stream().filter(gt30).forEach(System.out::println);

4.对集合进行map、reduce

List salary = Arrays.asList(15000,18000,20000);

double total = salary.stream().map(x->1.5*x).reduce((m,n)->m+n).get();

System.out.println(total);

----

以上只是列举了几个常用的案例,遇到匿名类都可以使用lambda去改造下,而且现在的IDE都会有插件提醒功能,多去使用自然就习惯了。今天的分享就到这里,能力有限,不足之处欢迎批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值