Interface IntStream

一个序列的原始int-valued元素支持顺序和并行聚合操作。
compact1,compact2,compact3
java.util.stream

接口IntStream

    • 方法详细
      • 过滤
      • IntStream 过滤器(IntPredicate 谓词)
      • 返回由与此给定谓词匹配的此流的元素组成的流。

        这是一个中间操作

      • 参数:
        predicate-一个 非干扰,  无国籍 谓词应用到每个元素,以确定是否它应包含
        返回:
        新的流
      • mapToObj
      • <U> Stream <U> mapToObj(IntFunction <?extends U> mapper)
      • 返回一个对象值Stream,其中包含将给定函数应用于此流的元素的结果。

        这是一个 中间操作

      • 类型参数:
        U - 新流的元素类型
        参数:
        mapper- 一个 无干扰的,  无状态的 功能,适用于每个元素
        返回:
        新的流
      • flatMap
      • IntStream flatMap(IntFunction <?extends IntStream > mapper)
      • 返回由通过将提供的映射函数应用于每个元素而产生的映射流的内容来替换该流的每个元素的结果的流。每个映射的流 closed在其内容已经被放入此流之后。(如果使用映射的流是null 空的流)。

        这是一个中间操作

      • 参数:
        mapper-一个 非干扰,  无状态 功能应用到其中产生的每个元素  IntStream的新值的
        返回:
        新的流
        也可以看看:
        Stream.flatMap(Function)
      • 窥视
      • IntStream 偷看(IntConsumer 动作)
      • 返回由该流的元素组成的流,另外在从生成的流中消耗元素时对每个元素执行提供的操作。

        这是一个中间操作

        对于并行流管线,可以在上游操作的任何时间和任何线程中调用该元素可用的动作。如果操作修改共享状态,则负责提供所需的同步。

      • API注:
        该方法主要用于支持调试,您希望在流程中流过某个特定点时查看元素:
        
             IntStream.of(1, 2, 3, 4)
                 .filter(e -> e > 2)
                 .peek(e -> System.out.println("Filtered value: " + e))
                 .map(e -> e * e)
                 .peek(e -> System.out.println("Mapped value: " + e))
                 .sum();
         
        参数:
        action- 在流中消耗的元素上执行的  非干扰操作
        返回:
        新的流
      • 限制
      • IntStream limit(long maxSize)
      • 返回由该流的元素组成的流,被截断为不再maxSize长度。

        这是一个短暂的有状态的中间操作

      • API注:
        虽然 limit()在顺序流管线上通常是一种便宜的操作,但是在有序的并行管道上可能是相当昂贵的,特别是对于大的值 maxSize,因为 limit(n) 限制不仅返回任何 n个元素,而且 返回遇到顺序中的 前n个元素。如果您的情况允许,使用无序流源(如 generate(IntSupplier))或删除排序约束 BaseStream.unordered()可能会导致 limit()并行流水线的显着加速。如果需要与遇到顺序一致,并且 limit()在并行管道中遇到较差的性能或内存 利用率,则切换到顺序执行 sequential()可能会提高性能。
        参数:
        maxSize - 流应该限制的元素数量
        返回:
        新的流
        抛出:
        IllegalArgumentException- 如果 maxSize是否定的
      • 跳跃
      • IntStream skip(long n)
      • 在丢弃流的第一个n元素后,返回由该流的剩余元素组成的流。如果此流包含少于n元素,则将返回空流。

        这是一个有状态的中间操作

      • API注:
        虽然 skip()通常是顺序流管线上的廉价操作,但在有序的并行管道上可能是相当昂贵的,特别是对于大值 n,因为 skip(n) 被限制为不仅跳过任何 n个元素,而且 跳过遇到次序中的 前n个元素。如果您的情况允许,使用无序流源(如 generate(IntSupplier))或删除排序约束 BaseStream.unordered()可能会导致 skip()并行流水线的显着加速。如果需要与遇到顺序一致,并且 skip()在并行管道中遇到较差的性能或内存 利用率,则切换到顺序执行 sequential()可能会提高性能。
        参数:
        n - 要跳过的主要元素的数量
        返回:
        新的流
        抛出:
        IllegalArgumentException- 如果 n是否定的
      • 的forEach
      • void forEach(IntConsumer 动作)
      • 对此流的每个元素执行操作。

        这是一个终端操作

        对于并行流管道,此操作不能 保证遵守流的遇到顺序,因为这样做会牺牲并行性的好处。对于任何给定的元素,动作可以在图书馆选择的任何时间和任何线索中执行。如果操作访问共享状态,则负责提供所需的同步。

      • 参数:
        action- 对元素执行  不干扰的行为
      • forEachOrdered
      • void forEachOrdered(IntConsumer 动作)
      • 对此流的每个元素执行一个操作,保证每个元素按遇到顺序处理,以便具有定义的遇到顺序的流。

        这是一个终端操作

      • 参数:
        action- 对元素执行  不干扰的行为
        也可以看看:
        forEach(IntConsumer)
      • 指定者
      • int [] toArray()
      • 返回一个包含此流的元素的数组。

        这是一个终端操作

      • 返回:
        一个包含此流的元素的数组
      • 减少
      • int reduce(int identity, IntBinaryOperator op)
      • 执行还原上使用所提供的标识值和所述本流的元素,  累积功能,并返回减少值。这相当于:
        
             int result = identity;
             for (int element : this stream)
                 result = accumulator.applyAsInt(result, element)
             return result;
         
        但不限于顺序执行。

        identity值必须是累加器函数的标识。这意味着对于所有人x来说 accumulator.apply(identity, x),等于x。该accumulator函数必须是 关联函数。

        这是一个终端操作

      • API注:
        总和,最小,最大和平均都是减少的特殊情况。一个数字流可以表示为:
        
             int sum = integers.reduce(0, (a, b) -> a+b);
         
        或更紧凑:
        
             int sum = integers.reduce(0, Integer::sum);
         

        尽管与简单地将循环中的总体变量相比,这可能看起来更为迂回的方式进行,但减少操作更平稳地并行化,而不需要额外的同步,并大大降低了数据竞争的风险。

        参数:
        identity - 积累函数的身份值
        op-一个 关联,  无干扰,  无状态 的组合两个值函数
        返回:
        减少的结果
        也可以看看:
        sum(),  min(),  max(),  average()
      • 减少
      • OptionalInt reduce(IntBinaryOperator op)
      • 执行减少有关此流的元件,使用 缔合累积功能,并返回一个OptionalInt描述该减小值,如果有的话。这相当于:
        
             boolean foundAny = false;
             int result = null;
             for (int element : this stream) {
                 if (!foundAny) {
                     foundAny = true;
                     result = element;
                 }
                 else
                     result = accumulator.applyAsInt(result, element);
             }
             return foundAny ? OptionalInt.of(result) : OptionalInt.empty();
         
        但不限于顺序执行。

        accumulator函数必须是 关联函数。

        这是一个终端操作

      • 参数:
        op-一个 关联,  无干扰,  无状态 的组合两个值函数
        返回:
        减少的结果
        也可以看看:
        reduce(int, IntBinaryOperator)
      • 搜集
      • 收集(供应商,供应商, 对象消费者,聚合器, BiConsumer <R,R>组合器)
      • 对此流的元素执行可变缩减操作。可变缩减是其中减值是可变结果容器的缩减值,例如,ArrayList通过更新结果的状态而不是通过替换结果来合并元素。这产生的结果相当于:
        
             R result = supplier.get();
             for (int element : this stream)
                 accumulator.accept(result, element);
             return result;
         

        像这样reduce(int, IntBinaryOperator)collect操作可以并行化,而不需要额外的同步。

        这是一个终端操作

      • 类型参数:
        R - 结果的类型
        参数:
        supplier - 创建新结果容器的函数。对于并行执行,可以多次调用此函数,并且每次都必须返回一个新的值。
        accumulator-一个 缔合,  非干扰性,  无状态 用于将一个额外的元件到结果函数
        combiner-一个 缔合,  非干扰,  无状态 功能用于组合两个值,它必须与蓄能器功能兼容
        返回:
        减少的结果
        也可以看看:
        Stream.collect(Supplier, BiConsumer, BiConsumer)
      • int sum()
      • 返回此流中元素的总和。这是减少的特殊情况, 相当于:
        
             return reduce(0, Integer::sum);
         

        这是一个终端操作

      • 返回:
        这个流中元素的总和
      • OptionalInt min()
      • 返回OptionalInt描述此流的最小元素,如果此流为空,则返回空可选项。这是减少的特殊情况, 相当于:
        
             return reduce(Integer::min);
         

        这是一个终端操作

      • 返回:
        一个 OptionalInt包含此流的最小元素, OptionalInt如果流为空,则为空
      • 最大
      • OptionalInt max()
      • 返回OptionalInt描述此流的最大元素,如果此流为空,则返回空可选项。这是减少的特殊情况, 相当于:
        
             return reduce(Integer::max);
         

        这是一个终端操作

      • 返回:
        包含 OptionalInt此流的最大元素, OptionalInt如果流为空,则为空
      • 计数
      • 长计数()
      • 返回此流中的元素数。这是减少的特殊情况,相当于:
        
             return mapToLong(e -> 1L).sum();
         

        这是一个终端操作

      • 返回:
        这个流中元素的数量
      • 平均
      • OptionalDouble average()
      • 返回OptionalDouble描述此流的元素的算术平均值,如果此流为空,则返回空值。这是减少的一个 特例

        这是一个终端操作

      • 返回:
        一个 OptionalDouble包含此流的平均元素,如果流为空,则为空可选
      • summaryStatistics
      • IntSummaryStatistics summaryStatistics()
      • 返回IntSummaryStatistics描述有关此流的元素的各种摘要数据。这是减少的一个特例

        这是一个终端操作

      • 返回:
        一个 IntSummaryStatistics有关此流中的元素描述各种摘要数据
      • anyMatch
      • boolean anyMatch(IntPredicate 谓词)
      • 返回此流的任何元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空, false则返回并且不评估谓词。

        这是一个短路终端操作

      • API注:
        该方法评估了流的元素(对于某些x P(x))的 谓词的存在量化。
        参数:
        predicate-一个 无干扰,  无状态的 断言适用于该流的元素
        返回:
        true 如果流的任何元素与提供的谓词匹配,否则  false
      • allMatch
      • boolean allMatch(IntPredicate 谓词)
      • 返回此流的所有元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空,true则返回并且不评估谓词。

        这是一个短路终端操作

      • API注:
        该方法评估了流的元素(对于所有x P(x))的谓词的 通用量化。如果流是空的,量化据说是 空洞地满足,总是 true(不管的P(X))。
        参数:
        predicate-一个 无干扰,  无状态的 断言适用于该流的元素
        返回:
        true 如果流的所有元素与提供的谓词匹配,否则流为空,否则  false
      • noneMatch
      • boolean noneMatch(IntPredicate 谓词)
      • 返回此流的元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空,true则返回并且不评估谓词。

        这是一个短路终端操作

      • API注:
        此方法评估 普遍量化通过该流中的元素的否定谓词的(对于所有的x〜P(X))。如果流是空的,那么量化被认为是空虚的,并且总是 true与P(x)无关。
        参数:
        predicate-一个 无干扰,  无状态的 断言适用于该流的元素
        返回:
        true 如果流的任何元素都不匹配提供的谓词,否则流为空,否则  false
      • 使用FindFirst
      • OptionalInt findFirst()
      • 返回OptionalInt描述此流的第一个元素,OptionalInt如果流为空,则返回一个空。如果流没有遇到顺序,则可能会返回任何元素。

        这是一个短路终端操作

      • 返回:
        一个 OptionalInt描述该流的第一个元素,或空 OptionalInt如果流是空
      • findAny
      • OptionalInt findAny()
      • 返回描述OptionalInt流的某些元素,OptionalInt如果流为空,则返回空。

        这是一个短路终端操作

        这个操作的行为显然是不确定的; 可以自由选择流中的任何元素。这是为了允许并行操作中的最大性能; 成本是同一来源上的多次调用可能不会返回相同的结果。(如果需要稳定的结果,请findFirst()改用。)

      • 返回:
        一个 OptionalInt描述该流的某些元件,或者一个空 OptionalInt如果流是空
        也可以看看:
        findFirst()
      • asLongStream
      • LongStream asLongStream()
      • 返回由LongStream该流的元素组成的转换为long

        这是一个中间操作

      • 返回:
        LongStream由这个流的元素组成,转换为 long
      • asDoubleStream
      • DoubleStream asDoubleStream()
      • 返回由DoubleStream该流的元素组成的转换为double

        这是一个中间操作

      • 返回:
        DoubleStream由这个流的元素组成,转换为 double
      • 盒装
      • Stream < Integer > boxed()
      • 返回一个Stream由此流的元素组成的,每个元素包含一个Integer

        这是一个中间操作

      • 返回:
        一个 Stream一致的此流的元件,每个盒装到 Integer
      • 建设者
      • 静态 IntStream.Builder builder()
      • 返回一个生成器IntStream
      • 返回:
        流构建器
      • 静态 IntStream 空()
      • 返回一个空的顺序IntStream
      • 返回:
        一个空的顺序流
      • (int t)的静态 IntStream
      • 返回包含IntStream单个元素的顺序。
      • 参数:
        t - 单一元素
        返回:
        单例顺序流
      • 静态 intStream (int ... values)
      • 返回其元素是指定值的顺序排序流。
      • 参数:
        values - 新流的元素
        返回:
        新的流
      • 迭代
      • static IntStream iterate(int seed, IntUnaryOperator f)
      • 返回一个无限连续有序IntStream通过函数的迭代应用产生f为初始元素seed,产生Stream包括seedf(seed), f(f(seed)),等。

        第一个元素(位置0IntStream将被提供seed。因为n > 0,位置上的元素 n将是将函数f应用于位置上的元素的结果n - 1

      • 参数:
        seed - 初始元素
        f - 要应用于上一个元素以生成新元素的函数
        返回:
        一个新的顺序  IntStream
      • 生成
      • 静态 IntStream 生成(IntSupplier s)
      • 返回无限顺序无序流,其中每个元素由提供的每个元素生成IntSupplier。这适合于产生恒定流,随机元素流等
      • 参数:
        sIntSupplier用于生成的元素
        返回:
        一个新的无限顺序无序  IntStream
      • 范围
      • 静态 IntStream 范围(int startInclusive, int endExclusive)
      • 通过增量步骤返回IntStreamstartInclusive (包括)到endExclusive(排除)的顺序排列 1
      • API注:

        可以使用for循环如下顺序地产生递增值的等效序列:

        
             for (int i = startInclusive; i < endExclusive ; i++) { ... }
         
        参数:
        startInclusive - (含)初始值
        endExclusive - 专属上限
        返回:
        顺序 IntStream为的范围内 int 的元件
      • rangeClosed
      • static IntStream rangeClosed(int startInclusive, int endInclusive)
      • 通过增量步骤返回IntStreamstartInclusive (包括)到endInclusive(包括)的顺序排列 1
      • API注:

        可以使用for循环如下顺序地产生递增值的等效序列:

        
             for (int i = startInclusive; i <= endInclusive ; i++) { ... }
         
        参数:
        startInclusive - (含)初始值
        endInclusive - 包容上限
        返回:
        顺序 IntStream为的范围内 int 的元件
      • CONCAT
      • 静态 IntStream concat(IntStream a, IntStream b)
      • 创建一个懒惰连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。如果两个输入流都被排序,则生成的流被排序,并且如果任何一个输入流是并行的,则并行。当结果流关闭时,调用两个输入流的关闭处理程序。
      • 实施注:
        在重复连接构建流时要小心。访问深层级流的元素可能导致深度的调用链,甚至可能 StackOverflowException
        参数:
        a - 第一流
        b - 第二流
        返回:
        两个输入流的并置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值