Lamda Expression
Posted guanven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lamda Expression相关的知识,希望对你有一定的参考价值。
1.为什么使用lamda表达式?
Java8的λ表达式的基本用途:完成了回调的原意——代码的参数化
在java8之前,回调的代码通常由匿名类提供
2.lamda表达式语法
lamda表达式包含三部分:
1、 一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数
2、 一个箭头符号
3、 方法体,可以是表达式和代码块
(parameters)->expression 或者 (parameters)->{statements;}
3.lamda表达式规则
栗子:Runnable runnable = () -> System.out.println("这个是用拉姆达实现的线程");
方法没有参数,->前面的()中不需要声明形参
->后边代码只有一行,()可以省略
4.lamda表达式应用应用1:函数式接口应用
1. 定义一个@FunctionalInterface注解标志的接口(函数式接口)
@FunctionalInterface
public interface A {
public abstract void call();
}
写一个@Test
public class Demo2 {
@Test
public void test(){
lamda();
}
public void lamda(){
A a = ()-> System.out.println("lamda 实战1");
a.call();
}
}
结果输出:
应用2:使用lambda改进的集合框架Stream API
流(Stream)仅仅代表着数据流,并没有数据结构,所以他遍历完一次之后便再也无法遍历(这点在编程时候需要注意,不像Collection,遍历多少次里面都还有数据),它的来源可以是Collection、array、io等等。
流作用是提供了一种操作大数据接口,让数据操作更容易和更快。它具有过滤、映射以及减少遍历数等方法,这些方法分两种:中间方法和终端方法,“流”抽象天生就该是持续的,中间方法永远返回的是Stream,因此如果我们要获取最终结果的话,必须使用终点操作才能收集流产生的最终结果。区分这两个方法是看他的返回值,如果是Stream则是中间方法,否则是终点方法。
import java.util.stream.Stream;
public class StreamDemo {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
users.add(new User(20, "张三"));
users.add(new User(22, "李四"));
users.add(new User(10, "王五"));
Stream<User> stream = users.stream();
stream.filter(p -> p.getAge() > 20); //过滤年龄大于20的
}
}
---------------------
作者:high_tea
来源:CSDN
原文:https://blog.csdn.net/qq_21319187/article/details/82429788
版权声明:本文为博主原创文章,转载请附上博文链接!
以上是关于Lamda Expression的主要内容,如果未能解决你的问题,请参考以下文章