没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文是博主在学习《java8实战》的一些学习笔记。 从本节开始,将进入到java8 Stream(流)的学习中来。 本文中的部分示例基于如下场景:餐厅点菜,Dish为餐厅中可提供的菜品,Dish的定义如下: 1public class Dish { 2 /** 菜品名称 */ 3 private final String name; 4 /** 是否是素食 */ 5 private final boolean vegetarian; 6 /** 含卡路里 */ 7 private final int calories; 8 /** 类型 */ 9
资源推荐
资源详情
资源评论
java8实战读书笔记:初识实战读书笔记:初识Stream、流的基本操作(流计算)、流的基本操作(流计算)
本文是博主在学习《java8实战》的一些学习笔记。
从本节开始,将进入到java8 Stream(流)的学习中来。
本文中的部分示例基于如下场景:餐厅点菜,Dish为餐厅中可提供的菜品,Dish的定义如下:
1public class Dish { 2 /** 菜品名称 */ 3 private final String name; 4 /** 是否是素食 */ 5 private final boolean vegetarian; 6 /** 含卡路里 */ 7 private final int calories; 8 /** 类型 */ 9 private final Type type;1011 public Dish(String name, boolean vegetarian, int calories, Type type) {12 this.name = name;13 this.vegetarian = vegetarian;14 this.calories = calories;15 this.type = type;16 }1718 public enum Type { MEAT, FISH, OTHER }1920 // 省略set get方法21}public class Dish {
2 /** 菜品名称 */
3 private final String name;
4 /** 是否是素食 */
5 private final boolean vegetarian;
6 /** 含卡路里 */
7 private final int calories;
8 /** 类型 */
9 private final Type type;
10
11 public Dish(String name, boolean vegetarian, int calories, Type type) {
12 this.name = name;
13 this.vegetarian = vegetarian;
14 this.calories = calories;
15 this.type = type;
16 }
17
18 public enum Type { MEAT, FISH, OTHER }
19
20 // 省略set get方法
21}
菜单的数据如下:
1List menu = Arrays.asList( 2new Dish("pork", false, 800, Dish.Type.MEAT), 3new Dish("beef", false, 700, Dish.Type.MEAT), 4new Dish("chicken", false, 400, Dish.Type.MEAT), 5new Dish("french fries", true, 530, Dish.Type.OTHER), 6new Dish("rice", true, 350, Dish.Type.OTHER), 7new Dish("season fruit", true, 120, Dish.Type.OTHER), 8new Dish("pizza", true, 550, Dish.Type.OTHER), 9new Dish("prawns", false, 300, Dish.Type.FISH),10new Dish("salmon", false, 450, Dish.Type.FISH) );List menu = Arrays.asList(
2new Dish("pork", false, 800, Dish.Type.MEAT),
3new Dish("beef", false, 700, Dish.Type.MEAT),
4new Dish("chicken", false, 400, Dish.Type.MEAT),
5new Dish("french fries", true, 530, Dish.Type.OTHER),
6new Dish("rice", true, 350, Dish.Type.OTHER),
7new Dish("season fruit", true, 120, Dish.Type.OTHER),
8new Dish("pizza", true, 550, Dish.Type.OTHER),
9new Dish("prawns", false, 300, Dish.Type.FISH),
10new Dish("salmon", false, 450, Dish.Type.FISH) );
我们以一个简单的示例来引入流:从菜单列表中,查找出是素食的菜品,并打印其菜品的名称。
在Java8之前,我们通常是这样实现该需求的:
1List dishNames = new ArrayList(); 2for(Dish d menu) { 3 if(d.isVegetarian()) { 4 dishNames.add(d.getName()); 5 } 6} 7//输出帅选出来的菜品的名称: 8for(String n : dishNames) { 9 System.out.println(n);10}List dishNames = new ArrayList();
2for(Dish d menu) {
3 if(d.isVegetarian()) {
4 dishNames.add(d.getName());
5 }
6}
7//输出帅选出来的菜品的名称:
8for(String n : dishNames) {
9 System.out.println(n);
10}
那在java8中,我们可以这样写:
1menu.streams() .filter( Dish::isVegetarian).map( Dish::getName) .forEach( a -> System.out.println(a) );menu.streams() .filter( Dish::isVegetarian).map( Dish::getName) .forEach( a -> System.out.println(a) );
其运行输出的结果:
怎么样,神奇吧!!!
在解释上面的代码之前,我们先对流做一个理论上的介绍。
资源评论
weixin_38700240
- 粉丝: 2
- 资源: 976
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功