Stream
从数据源形成的元素序列-----比如集合、数组、输入输出资源
集合是数据结构–主要是以特定的时间(空间)复杂度来访问和存储元素
流主要是处理数据,比如filter map reduce find match sort —可以顺序执行 也可以并行执行
若流取的数据是顺序的,那么流里所存也是顺序的 并行执行的流不能保证执行顺序
集合是存储在内存上的,会包含数据结构中目前所有的值
流是概念上固定的数据库,不能添加或者删除,只是在流中提取需要的值。流只能遍历一次,遍历结束,则这个流被消耗掉了,可以再获得一个新的流用
(集合之类的是可重复的源 若是IO通道则不是
List<String> threeHighCaloricDishNames = menu.stream()//从menu获得流,建立操作流水线
.filter(d -> d.getCalories() > 300)//首先选出高热量的菜肴
.map(Dish::getName)//获取菜名
.limit(3)//只选择头三个
.collect(toList());/
filter map limit形成流水线(是中间结果 不会生成结果
collect是终端操作(还有forEach count,终端操作会生成结果(结果是不是流的任何 比如LIst Integer void
总结 流的使用包含
1.对源的查询
2.各种中间操作,形成流水线,不形成结果
3.终端操作形成结果
参考文档:
https://blog.csdn.net/a13935302660/article/details/97057513?ops_request_misc=&request_id=&biz_id=102&utm_term=stream&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-9-97057513.first_rank_v2_pc_rank_v29