Stream 常用API

终结方法

void forEach(Consumer action); 会将每个元素传进处理

long count() 返回元素总个数

boolean allMatch(Predicate predicate);  全满足?
boolean anyMatch(Predicate predicate); 一个满足?
boolean noneMatch(Predicate predicate);都不满足?

 T reduce(默认值, (x,y)->{ 比如x+y }); 将一组数据加工出结果
 x第一次为默认值,y为stream的元素1,依次进行

map搭配reduce:

// 求出所有年龄的总和
int totalAge = Stream.of(
new Person("刘德华", 58),
new Person("张学友", 56)
.map((p) -> p.getAge())  抽出年龄流
.reduce(0, (x, y) -> x + y); 累加
System.out.println("totalAge = " + totalAge);

Optional findFirst(); 找到第一个元素,返回Optional(新类型.get()查看元素)

Optional max/min (Comparator comparator); 通过定制排序返回最大或最小值


非终结方法(链式stream)

filter(Predicate predicate); 根据判断条件 返回过滤后的子集流

limit(long maxSize); 返回指定长度截取后的流,大于则返回原流

skip(long n);返回指定步数后的流,大于则跳过头返回空流

<R>Stream<R> map(Function<T,R> mapper)将T类型所有元素 映射成 R类型

也可以抽取一部分数据进行转换出U流(T -> U)。比如抽取出Student中的name

Stream<String> original = Stream.of("11", "22");
Stream<Integer> result = original.map(Integer::parseInt); 依次转为11,12
result.forEach(s -> System.out.println(s + 10)); 输出21  32(stream累加

collect()

sorted(); 自然排序
sorted(Comparator comparator); 定制排序

distinct(); 去重

 static Stream concat(Stream a, Stream b)  流合并 (静态方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值