第16天 Stream流和方法引用

Stream流

概念:生产流水线

特点:

  • 流是一个接口
  • 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。
  • 数据源流的来源。 可以是集合,数组 等。
  • Pipelining: 中间操作都会返回流对象本身。 这样多个操作可以串联成一个管道, 如同流式风格(fluent
    style)。 这样做可以对操作进行优化, 比如延迟执行(laziness)和短路( short-circuiting)。
  • 内部迭代: 以前对集合遍历都是通过Iterator或者增强for的方式, 显式的在集合外部进行迭代, 这叫做外部迭
    代。 Stream提供了内部迭代的方式,流可以直接调用遍历方法

获取流的两种方式

获取方式集合数组
Arr.stream()List.stream()Arrays.stream(arr)
Stream.of(Arr)Stream.of(list)Stream.of(arr)
  • 只有单列集合才能获取流
  • stream.of(数组) stream.of(1,2,3,4) stream流里存的是一个一个数组中的元素
  • stream.of(集合) 流里存的是一个集合
  • list.steam() 流里存的是及各中的元素

常用方法

  • 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方
    法均为延迟方法。)
  • 终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调
    用。本小节中,终结方法包括 count 和 forEach 方法
方法名称返回值描述
ofstream静态方法,Stream.of(集合)
concatstream静态方法,Stream.concat(stream1,stream2)
forEachvoid终结方法,consumer 逐个处理
countlong终结方法,返回流中的元素个数
filterstreampredicate 保留过滤的元素
mapstreamfuncton 转换(映射)成要求的类型
limit streamstream返回 保留前i个元素的stream )
skipstream返回 跳过i个元素的stream
colleciton返回对应的集合Stream.collect(Collectors.toList) Stream转化成列表

代码联系

String[] names = {"lili","nana","luna"};
Stream.of(names).forEach(System.out::println);
取元素长度是4的集合
List<String> myList = list.stream().filter(s -> s.length() == 4).collect(Collectors.toList());
list.stream().filter(s->s.length()==4).forEach(s-> System.out.println(s));
Stream<String> stream3 = Stream.concat(stream1, stream2);
Arrays.stream(arr1).map(s->Integer.parseInt(s)).forEach(s-> System.out.println(s));
Stream<String> stream1 = one.stream().filter(s -> s.length() == 3).limit(3);
Stream<String> stream2 = two.stream().filter(s -> s.startsWith("张")).skip(2);
Stream<String> bigStream = Stream.concat(stream1, stream2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值