Lambda 表达式的应用
lambda表达式
- 函数式接口:只有一个方法的接口,比如Runnable和Comparator
先看几个 lambda 表达式的例子进行理解
(int x,int y) -> x + y //接收x和y两个整形参数,并返回他们的和
() -> 66 //不接收任何参数直接返回66
(String name) -> {System.out.println(name);} //接收一个字符串然后打印出来
(View view) -> {view.setText("123");} //接受一个view对象并调用setText方法
复制代码
- lambda 表达式本质上是一个 由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能
- 是java se 8 中的一个重要新特性。lambda表达式允许你通过表达式来代替接口功能
- 基本语法:
(parameters) -> expression 或
(parameters) ->{ statements; }
使用lambda 表达式遍历集合
String[] stars = {"james", "kobe", "paul", "Anthony","rose", "love","jr", "Jordan "};
List<String> starList = Arrays.asList(stars);
starList.forEach((star) -> System.out.println(star));
//或者
starList.forEach(System.out::println);
复制代码
在使用匿名内部类的时候
- 比如创建线程,不适用lambda表达式
new Thread(new Runnable() {@Overridepublic void run() {System.out.println(1);}
}).start();
复制代码
- 使用lambda 表达式
new Thread(()-> System.out.println(1)).start();
复制代码
集合排序
- 不使用lambda 表达式
String[] stars = {"james", "kobe", "paul", "Anthony","rose", "love","jr", "Jordan "};Arrays.sort(stars, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});
复制代码
- 使用lambda 表达式
Arrays.sort(stars,(String s1,String s2) -> (s1.compareTo(s2)));
复制代码
stream和lamda的结合使用
- 什么是stream
- 若想要将一个集合中的某个属性提取出来,比如下面这样
List<Player>list = new ArrayList<>();list.add(new Player("kobe","lakers",31,30000));list.add(new Player("james","lakers",34,33000));list.add(new Player("paul","rocket",34,20000));list.add(new Player("hardon","rocket",31,20000));List<String> names = new ArrayList<>();for (Player player : list) {names.add(player.getName());}for (String name : names) {System.out.println(name);}复制代码
- 若使用lambda 表达式
List<String> names = list.stream().map(Player::getName).collect(Collectors.toList());
names.forEach(System.out::println);
复制代码
- 当然我们还可以进行更复杂一点的操作,给每个球员的分数加1000
list.forEach( s -> s.setScore(s.getScore() + 1000));
list.stream().map(Player::getScore).collect(Collectors.toList()).forEach(System.out::println);复制代码
- 也可以过滤出分数大于30000 年龄小于32 的球员
list.stream().filter((p) -> (p.getScore() > 30000)).filter((p) -> (p.getAge() < 32)).collect(Collectors.toList()).forEach(System.out::println);
复制代码
- 根据球员的分数来排序
list.stream().sorted((p1,p2) -> (p1.getScore()-p2.getScore())).collect(Collectors.toList()).forEach(System.out::println);
复制代码
Lambda 表达式的应用相关推荐
- Lambda 表达式基础理论与示例
Lambda 表达式基础理论与示例 Lambda 表达式,也可称为闭包,推动 Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). 使用 Lam ...
- lambda表达式树
一.定义: 表达式树又称为表达式目录树,以数据形式表示语言级代码.所有的数据都存储在树结构中,每个结点表示一个表达式(Expression). 二.要点: –Lambda表达式的参数类型可以忽略,因为 ...
- java 8 lambda reduce_JDK8新特性Lambda表达式体验
"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstra ...
- java saf_Java 8 Lambda表达式探险
为什么? 我们为什么需要Lambda表达式 主要有三个原因: > 更加紧凑的代码 比如Java中现有的匿名内部类以及监听器(listeners)和事件处理器(handlers)都显得很冗长 &g ...
- lamda表达式python_Python--13 lambda表达式
python 允许使用lambda表达式来创建匿名函数 lambda表达式 >>>def ds(x): ... return 2 * x +1 ... >>> ds ...
- C++11:Lambda表达式(匿名函数)理解
C++在C11标准中引入了匿名函数,即没有名字的临时函数,又称之为lambda表达式.lambda表达式 实质上是创建一个匿名函数/对象.即你可以理解为(Lambda 表达式实际上是一个函数,只是它没 ...
- java8 lambda 表达式详解
lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法 使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例 可以将 lambda ...
- Java8中Lambda表达式的10个例子
Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 //Before Java 8: new Thread(new Runnable() ...
- 【读书笔记】Lambda表达式
Lambda表达式,是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. Lambda表达式, 都是用"=>"运算符. 读作"goes t ...
- 【C++】lambda 表达式
1.lambda 表达式 1.1 lambda 特点 lambda表示一个可调用单元,可视为内联函数 范式 : 具有一个返回类型,一个参数列表,一个函数体 [captrue list](paramet ...
最新文章
- cmder里ls、pwd、自定义的alias等一系列命令都无法使用
- swust oj 962
- Leetcode4-寻找两个正序数组的中位数原理及代码实现
- java读取属性文件的方法_java读取属性文件的方法
- Android关于Handler发送消息里面的arg1和arg2以及obj和what的用法
- 移动端判断手机横竖屏状态
- 前端- 不用React 而使用 Vue,这么做对吗?
- 中国为什么不能成为国际数据中心枢纽
- 基于Java的贪吃蛇游戏设计(含免费可用源代码)
- php文章详情页排版,WordPress自定义文章详情页模板
- 计算机大型机小型机的缩写,计算机可被划分为3个基本类型大型机,小型机与微型机。.doc...
- UVA - 10106 Product
- 让Thread#stop方法无法终止你的线程
- 小熊派-FreeRTOS-串口打印
- 用python绘制叠加等边三角形_使用turtle库绘制叠加等边三角形
- 基于Node.js的3DTiles三维倾斜摄影模型爬虫
- jquery实现新闻消息滚动
- 云服务器上部署仿牛客网项目
- 关于PDU电源插座,你了解多少?
- 学计算机需要什么基础?