Stream流(十四)
获取Stream流
Stream流结合Lambda表达式,简化集合和数组的操作。
使用步骤:
- 先得到一条Stream流(流水线),并把数据放上去
- 利用Stream流中的API进行各种操作,操作包含:数据过滤,类型转换,数据统计,数据打印等
- 过滤和转换是中间方法,方法调用完毕后,可调用其他方法
- 统计和打印是终结方法,最后一步,调用完毕后,不可调用其他方法
获取方式:
- 单列集合
- 方法名:default Stream
stream() - 说明:Collection中的默认方法
- 方法名:default Stream
- 双列集合
- 不可直接获取,需通过keySet或entrySet获取单列集合后进行获取
- 数组
- 方法名:public static
Stream stream(T[] array) - 说明:Arrays工具类的静态方法
- 方法名:public static
- 一堆零散数据
- 方法名:public static
Stream of(T…values) - 说明:Stream接口中的静态方法
- 方法的形参是一个可变参数,可传递一堆零散的数据,也可传递数组,但传递数组必须是引用数据类型,若传递基本数据类型,会把整个数组当成一个元素放到Stream中
- 方法名:public static
范例:
1 | import java.util.ArrayList; |
中间方法
中间方法返回的新Stream流,原本的Stream流只能使用一次,建议使用链式编程。
修改Stream流中的数据,不会影响原来集合或数组中的数据。
fiter
格式:
Stream
说明:过滤
limit
格式:
Stream
说明:获取前面maxSize个元素
skip
格式:
Stream
说明:跳过前面n个元素
distinct
格式:
Stream
说明:元素去重,依赖(hashCode和equals方法)
concat
格式:
static
说明:合并a和b两个流为一个流
map
格式:
Stream
说明:转换流中的数据类型
范例
1 | import java.util.ArrayList; |
终结方法
forEach
格式:
void forEach(Consumer action)
说明:遍历
count
格式:
long count()
说明:统计
toArray
格式1:
Object[] toArray()
说明:返回包含此流元素的数组。
格式2:
A[] toArray(IntFunction<A[]> generator)
说明:返回指定类型的数组
collect
格式:
collect(Collector collector)
说明:收集流中的数据,放到集合中
- Collectors.toList(),可以有重复
- Collectors.toSet(),自动去重
- Collectors.toMap(),键不可重复,否则会报错
范例
1 | import java.util.*; |
范例
例1
1 | /* |
例2
1 | /* |
例3
1 | /* |