流和集合的区别
1. 流只能消费一次
2. 循环方式不同,流:内部迭代,集合:外部迭代
哲学中的流和集合
流--->时间
集合--->空间
流的使用
- [1] 一个数据源(如集合)来执行一个查询
- [2] 一个中间操作链,形成一条流的流水线
- [3] 一个终端操作,执行流水线,并能生成结果
流的中间操作和终端操作
操作 | 描述 | 类型 | 返回类型 | 使用类型/函数式接口 | 函数描述符 |
---|---|---|---|---|---|
filter | 筛选 | 中间 | Stream | Predicate | T->boolean |
distinct | 独一无二 | 中间(有状态-无界) | Stream | ||
skip | 跳过 | 中间(有状态-有界) | Stream | long | |
limit | 限制几个 | 中间(有状态-有界) | Stream | long | |
map | 获取…重新返回单独的流 | 中间 | Stream | Function | T->R |
flatMap | 生成扁平化为单个流 | 中间 | Stream | Function> | T->Stream |
sorted | 排序 | 中间(有状态-无界) | Stream | Comparator | (T,T)->int |
anyMatch | 终端 | boolean | Predicate | T->boolean | |
noneMatch | 终端 | boolean | Predicate | T->boolean | |
allMatch | 终端 | boolean | Predicate | T->boolean | |
findAny | 终端 | Optional | |||
findFirst | 终端 | Optional | |||
forEach | 终端 | void | Consumer | T->void | |
collect | 终端 | R | Collector | ||
reduce | 终端(有状态-有界) | Optional | BinaryOperator | (T,T)->T | |
count | 终端 | long |