JDK8—函数式处理(I)

流是啥

流是JavaAPI的新成员,它允许你以声明性方式处理数据集合。
例如:实现返回热量低的菜肴的名称

jdk7
List<Dish> lowCaloricDishes = new ArrayList<>();
for(Dish d : menu){
 if(d.getCalories()<400){
    lowCaloricDishes.add(d)                    //累加器筛选出元素
 }
}

Collections.sort(lowCaloricDishes,new Comparator<Dishes>(){
public int compare(Dish d1,Dish d2){
return Integer.compare(d1.getCalories,d2.getCalories);       //匿名内部类进行排序
}
})

List<String> lowCaloricDishesName = new ArrayList<>();
for(Dish d:lowCaloricDishes){
lowCaloricDishesName.add(d.getName());                   //讲菜名放到集合中
}

jdk8
List<String> lowCaloricDishesName = 
							menu.stream()
								.filter(d->d.getCalories()<400)  //筛选出热量小于
								.sorted(comparing(Dish::getCalories)) //排序
								.map(Dish::getName)       //取出菜名         
								.collect(toList());       //保存到list中

总结一下,Stream 让你的代码
声明性——更简洁,更易读
可复合——更灵活
可并行——性能更好

流与集合

集合讲的是数据 流讲的是计算

在这里插入图片描述
只能遍历一次 和迭代器类似,只能遍历一次。遍历完之后,我们就说这个流已经被消费掉了。
使用内部迭代

流的操作

简单叙述一下,后面会详细讲解,还是以上面的选出低热量的菜肴为例

menu ->     filter -> map ->limit       ->list
 数据源      		  中间操作             终端操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值