java8新特性之Stream学习笔记

(一) 创建Stream的四种方式

//1 通过Collection 系列集合的stream() 或parallelStream()
ArrayList strings = new ArrayList<>();
Stream stream = strings.stream();
//2 数组工具类
Person[] people=new Person[10];
Stream stream1 = Arrays.stream(people);
//3 Stream类中的静态方法of()
Stream aa = Stream.of(“aa”, “bb”, “cc”);
//4 创建无限流
// 迭代
Stream iterate = Stream.iterate(0, (x) -> x + 2);
// iterate.forEach(System.out::println);
// 生成
Stream.generate(Math::random).limit(10).forEach(System.out::println);

(二) Stream的中间操作

中间操作在触发终端操作之前不会做任何事,这种行为也被称为延迟加载;
filter: 接受Lambda,从流中排除某些元素
limit: 截断流,使元素不超过给定数量
skip(n) : 跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流。与limit(n)互补
distinct: 筛选,通过流所生成元素的hashCode()和equals()去除重复元素 元素需要重写hashCode()
和equals()。

映射:map----接受Lambda,将元素转换成其它形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap----接受一个函数作为参数,将流中的每个值转换成另一个流,然后把所有流连接成一个流。
map()和 flatMap() 的区别类似与Collection的add()和 addAll(),一个是将流加入新的流中(套娃操作),一个是将流中的元素加入新的流中。

排序
sorted() ---- 自然排序(Comparable)操作元素实现Comparable接口
sorted(Comparator com) 定制排序 排序方法中重写comparator方法

(三) Stream的终端操作

查找与匹配
allMatch—检查是否匹配所有元素
anyMatch—检查是否至少匹配一个元素
noneMatch—检查是否没有匹配所有元素
findFirst—返回第一个元素
findAny—返回当前流中的任意元素
count–返回流中元素的总个数
max—返回流中最大值
min—返回流中最小值

归约
reduce(T identity, BinaryOperator) / reduce(BinaryOperator) ----可以将流中元素反复结合起来,得到一个值

收集
collect—将流转换为其它形式。接收一个Collector接口的实现,用于给Stream中的元素做汇总的方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值