Java8 Lambda表达式的快速上手
来源:互联网 发布:网络正常浏览器打不开 编辑:程序博客网 时间:2024/05/12 15:17
工作时遇到了lambda表达式,所以看了看java8中相关的新特性,这里主要讲述了对Collection的操作
1、lambda表达式的写法
举个栗(例)子:
(int x, int y) -> {System.out.println(x + y)}
() -> 22
其中,第一个例子为有两个参数x、y,输出x、y的和,第二个例子为无参数,输出值22;
2、forEach方法
java8在Iterable接口中多了一个forEach方法,目的是遍历集合中的元素,简化了之前使用for循环以及其他方法的遍历。
举个栗(例)子:
List< Person > persons = new ArrayList< Person >();
persons.forEach( p -> System.out.println(p.getName()) );
这里会输出集合中每个Person的name,一条语句就能办到之前多行代码的操作。当然,在遍历的时候还可以进行你需要的操作。
例如:将每个Person信息都加入到map集合中
Map< String, Integer > map = new HashMap< String, Integer >();
persons.forEach( p -> map.put(p.getName(), p.getAge()));
3、stream方法
Collection接口中的方法,返回一个Stream(并行的聚合操作),我觉得可以看作一个中间类,当然,其更多的作用还需要各位去深入挖掘。
接下来的filter、map都需要依赖这个stream()方法。
4、filter方法
过滤集合中的元素,只获取符合要求的元素。
举个栗(例)子:
persons.stream().filter( p -> p.getAge() > 22).forEach(p -> System.out.println(p.getName()));
这里只会打印出年龄大于22岁的人的名字。
而filter方法中的参数为Predicate类型,所以这里的例子可以改为如下方式:
Predicate< Person> predicate = p -> p.getAge() > 12;
persons.stream().filter(predicate).forEach(p -> System.out.println(p.getName()));
这种方式与上面例子所得结果相同。
5、map方法
可以将List集合转换为Map集合。
举个栗(例)子:
如果我们想要取出集合中的名为Tom的人的信息,当然可以遍历集合,从其中取出name为Tom的对象。但是当取元素的操作比较频繁时,这种方法就有些不合适了,此时我们可以以Person的name为key,Person对象为value存储到map集合中。
上面的forEach方法介绍中就有对map的操作,而java8中,我们可以调用api直接在一条语句中实现;
Map< String, Person > map = persons.stream().collect(Collectors.toMap(p -> p.getName, p -> p));
而map在使用forEach遍历时,需要注意map中每个entry都是有key、value两个值。
map.forEach((k, v) -> System.out.println(k + “:” + v.getAge()));
这样就会打印出每个人的名字和年龄。
有关lambda表达式的基本使用就以上这些,而java8中的新特性当然也不止lambda表达式,更多的特性及亮点还需要各位自己去探索。
以上是个人理解,大家可以去查阅oracle的官方教程,相信你们也会爱上lambda表达式的。
官方教程请戳这里
- Java8 Lambda表达式的快速上手
- java8的lambda表达式
- Java8新增的Lambda表达式
- Java8引入的lambda表达式
- 一、java8的Lambda表达式
- Java8新增的Lambda表达式
- Java_ Java8 的 lambda 表达式
- 学习java8的lambda表达式
- Java8的学习计划--lambda表达式的语法
- java8中Lambda表达式的使用
- java8的lambda表达式以及方法引用
- Java8 lambda表达式的实现探索
- java8 Lambda表达式的学习与测试
- Java8 lambda 表达式的10示例
- JAVA8自定义Lambda表达式的常见使用方法
- java8 Lambda表达式的一些特点
- java8 lambda表达式的简单介绍
- Java8 Lambda表达式教程
- HDU5047
- 【转载】 友盟社会化Android组件之第三方登录
- [BZOJ1013][JSOI2008]球形空间产生器sphere-高斯消元
- python3[爬虫实战] 爬虫之scrapy爬取传智播客(我的奋斗我的路)
- CentOS安装JDK的三种办法
- Java8 Lambda表达式的快速上手
- 原因:MAC下webstorm输入中文非常卡
- 题目277-车牌号
- css一行文字多余的部分省略号隐藏的解决办法
- 进程控制编程之fork() exec函数族 终止函数
- 如何在Linux安装gcc
- Android N Graphics之wms中surface到SurfaceFlinger中的layer联系
- Linux下pip install失效
- 知行合一