Java基础-Stream流

第一章 Stream流

Stream(流)是一个来自数据源的元素队列
        元素是特点类型的对象,形成一个队列。Java中的Stream并不会存储元素。
        数据源:流的来源。可以是集合,数组等。

Stream操作的两个基础的特征:

        Pipelining:中间操作都会返回流对象本身。(优势:延迟执行和短路)。

        内部迭代:Stream提供了内部迭代的方式,流可以直接调用遍历方法。

当使用一个流的时候,通常包括三个基本步骤:获取一个数据源 -》数据转换 -》执行操作获取想要的结构。每次转换原有Stream 对象不改变,返回一个新的Stream 对象。

获取流

java.util.stream.Stream<T> 是Java 8新加入的最常用的流接口。

1. 根据Collection 获取流

        java.util.Collection 接口中新加入了default 方法stream 用来获取流,所以其所有实现类均可获取流。

2. 根据Map 获取流

        Map需要分key、value、entry,再获取流。

3. 根据数据获取流

        如果使用的不是集合或映射而是数组,Stream 接口中提供了静态方法 of,获取流。

Stream 流的常用方法:

forEach:逐一处理。该方法接收一个Consumer 接口函数,会将每一个流元素交给该函数进行处理。(用来遍历Stream流中的数据

void forEach(Consumer<? super T> action);

filer:过滤。可以通过filter 方法将一个流转换成另一个子集流。该接口接收一个Predicate 函数式接口参数(可以是一个Lambda或方法引用)作为筛选条件。(用于对Stream流中的数据进行过滤

Stream<T> filter(Predicate<? super T> predicate);

map:映射。如果需要将Stream流中的元素映射到另一个流中,可以使用map方法。该接口需要一个Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

count:统计个数。用于统计Stream 流中的元素个数。该方法返回一个long值代表元素个数。

long count();

 limit:取用前几个。limit 方法可以对流进行截取,只取用前几个。参数是一个long型,如果集合当前长度大于参数则进行截取;否则不进行操作。

Stream<T> limit(long maxSize);

  skip:跳过前几个。如果希望跳过前几个元素,可以使用skip 方法获取一个截取之后的新Stream流。如果流的当前长度大于n,则跳过前n个;否则将会得到一个长度为0的空流。

Stream<T> skip(long n);

  concat:组合。如果有两个流,希望合并成为一个流,那么可以使用Stream 接口中的静态方法concat。

static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值