double
原始专业化Stream
。 以下示例说明了使用Stream
和DoubleStream
的聚合操作,计算红色窗口小部件的权重总和:
double sum = widgets.stream() .filter(w -> w.getColor() == RED) .mapToDouble(w -> w.getWeight()) .sum();
请参阅类文档Stream
和用于包文档DoubleStream
可变构建器。
返回此流的所有元素是否与提供的谓词匹配。
返回此流的任何元素是否与提供的谓词匹配。
返回描述此流元素的算术平均值的
OptionalDouble
,如果此流为空,则返回空可选。
返回
Stream
其中包含此流的元素,
Double
为
Double
。
返回
DoubleStream
的构建器。
对此流的元素执行
DoubleStream
。
返回由与此给定谓词匹配的此流的元素组成的流。
返回OptionalDouble
描述流的一些元件,或一个空OptionalDouble
如果流是空的。OptionalDouble
描述此流的第一个元素,或空OptionalDouble
如果流是空的。DoubleSupplier
生成。
返回通过将给定的
next
函数迭代应用于初始元素
DoubleStream
产生的顺序有序
DoubleStream
,条件是满足给定的
hasNext
谓词。
返回有序无限连续
DoubleStream
由函数的迭代应用产生
f
到初始元素
seed
,产生
Stream
组成的
seed
,
f(seed)
,
f(f(seed))
等
返回由此流的元素组成的流,截断长度不超过
maxSize
。
返回一个流,该流包含将给定函数应用于此流的元素的结果。
返回
IntStream
其中包含将给定函数应用于此流的元素的结果。
返回
LongStream
其中包含将给定函数应用于此流的元素的结果。
返回一个对象值
Stream
它包含将给定函数应用于此流元素的结果。
返回描述此流的最大元素的
OptionalDouble
,如果此流为空,则返回空的OptionalDouble。
返回描述此流的最小元素的
OptionalDouble
,如果此流为空,则返回空的OptionalDouble。
返回此流的元素是否与提供的谓词匹配。
返回包含单个元素的顺序
DoubleStream
。
返回其元素为指定值的顺序有序流。
返回由此流的元素组成的流,另外在每个元素上执行提供的操作,因为元素是从结果流中消耗的。
使用提供的标识值和
OptionalDouble
(如果有)。
在丢弃流的第一个
n
元素后,返回由此流的其余元素组成的流。
以排序顺序返回由此流的元素组成的流。
返回此流中元素的总和。
返回
DoubleSummaryStatistics
描述有关此流元素的各种摘要数据。
如果对此流进行排序,则返回一个流,该流包含从此流中获取的与给定谓词匹配的最长元素前缀。
返回包含此流的元素的数组。
返回由与此给定谓词匹配的此流的元素组成的流。
这是一个
这是一个
Stream
它包含将给定函数应用于此流元素的结果。
这是一个
IntStream
其中包含将给定函数应用于此流的元素的结果。
这是一个
LongStream
其中包含将给定函数应用于此流的元素的结果。
这是一个
closed
。null
,则使用空流。)
这是一个
Double.compare(double, double)
比较元素的相等 这是一个
Double.compare(double, double)
比较元素的相等 这是一个
这是
对于并行流管道,可以在任何时间以及上游操作使元素可用的任何线程中调用该动作。 如果操作修改共享状态,则它负责提供所需的同步。
返回由此流的元素组成的流,截断长度不超过maxSize
。
这是一个
n
元素后,返回由此流的其余元素组成的流。
如果此流包含少于n
元素,则将返回空流。
这是一个
如果对此流进行排序,则最长前缀是与该给定谓词匹配的该流的连续元素序列。 序列的第一个元素是此流的第一个元素,紧跟在序列的最后一个元素之后的元素与给定的谓词不匹配。
如果此流是无序的,并且此流的某些(但不是所有)元素与给定谓词匹配,则此操作的行为是不确定的; 它可以自由地获取匹配元素的任何子集(包括空集)。
如果此流的所有元素与给定谓词匹配,则此流是有序还是无序,无论此操作是否接受所有元素(结果与输入相同),或者如果流的任何元素都不匹配给定谓词,则没有元素被采取(结果是一个空流)。
这是一个
如果对此流进行排序,则最长前缀是与该给定谓词匹配的该流的连续元素序列。 序列的第一个元素是此流的第一个元素,紧跟在序列的最后一个元素之后的元素与给定的谓词不匹配。
如果此流是无序的,并且此流的某些(但不是所有)元素与给定谓词匹配,则此操作的行为是不确定的; 它可以自由地删除匹配元素的任何子集(包括空集)。
如果此流的所有元素与给定谓词匹配,则该流是有序还是无序,无论该操作是否丢弃所有元素(结果是空流),或者如果流的任何元素都不匹配给定谓词,则不会丢弃任何元素(结果与输入相同)。
这是一个
这是一个
对于并行流管道,此操作并不保证尊重流的相遇顺序,因为这样做会牺牲并行的利益。 对于任何给定元素,可以在任何时间以及库选择的任何线程中执行该动作。 如果操作访问共享状态,则它负责提供所需的同步。
对此流的每个元素执行操作,确保以具有已定义的遭遇顺序的流的遭遇顺序处理每个元素。 这是一个
这是一个
double result = identity; for (double element : this stream) result = accumulator.applyAsDouble(result, element) return result;
但不限于按顺序执行。
identity
值必须是累加器函数的标识。 这意味着,对于所有x
, accumulator.apply(identity, x)
等于x
。 accumulator
函数必须是
这是一个
OptionalDouble
(如果有)。 boolean foundAny = false; double result = null; for (double element : this stream) { if (!foundAny) { foundAny = true; result = element; } else result = accumulator.applyAsDouble(result, element); } return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
但不限于按顺序执行。
accumulator
函数必须是
这是一个
ArrayList
,并且通过更新结果的状态而不是通过替换结果来合并元素。
这产生的结果相当于:
R result = supplier.get(); for (double element : this stream) accumulator.accept(result, element); return result;
与reduce(double, DoubleBinaryOperator)
一样, collect
操作可以并行化,无需额外同步。
这是一个
return reduce(0, Double::sum);
然而,由于浮点求和不精确,上述代码不一定等于通过该方法完成的求和计算。
浮点和的值是输入值以及加法运算的顺序的函数。 故意不定义该方法的加法运算的顺序以允许实现灵活性以提高计算结果的速度和准确性。 特别地,该方法可以使用补偿求和或其他技术来实现,以减少数值和与double
值的简单求和相比的误差界限。 由于未指定的操作顺序和使用不同求和方案的可能性,该方法的输出可能在相同的输入元素上变化。
各种条件可导致计算非有限和。 即使所有被求和的元素都是有限的,也会发生这种情况。 如果任何元素是非有限的,则总和将是非有限的:
- 如果任何元素是NaN,则最终总和将是NaN。
- 如果元素包含一个或多个无穷大,则总和将为无穷大或NaN。
- 如果元素包含符号相反的无穷大,则总和将为NaN。
- 如果元素包含一个符号的无穷大且中间和溢出到相反符号的无穷大,则总和可以是NaN。
这是一个
OptionalDouble
,如果此流为空,则返回空的OptionalDouble。
如果任何流元素是NaN,则最小元素将是Double.NaN
。
与数值比较运算符不同,此方法将负零视为严格小于正零。
这是 return reduce(Double::min);
这是一个
OptionalDouble
,如果此流为空,则返回空的OptionalDouble。
如果任何流元素是NaN,则最大元素将是Double.NaN
。
与数值比较运算符不同,此方法将负零视为严格小于正零。
这是 return reduce(Double::max);
这是一个
return mapToLong(e -> 1L).sum();
这是一个
OptionalDouble
,如果此流为空,则返回空可选。
计算的平均值可以在数值上变化,并具有计算总和的特殊情况行为; 有关详细信息,请参阅sum()
。
平均值是
这是一个
DoubleSummaryStatistics
描述有关此流的元素的各种摘要数据。
这是 这是一个
false
,并且不评估谓词。
这是一个
true
,并且不评估谓词。
这是一个
true
,并且不评估谓词。
这是一个
OptionalDouble
描述此流的第一个元素,或空OptionalDouble
如果流是空的。 这是一个
OptionalDouble
描述流的一些元件,或一个空OptionalDouble
如果流是空的。 这是一个
此操作的行为明确是不确定的; 可以自由选择流中的任何元素。 这是为了在并行操作中实现最大性能; 成本是同一源上的多次调用可能不会返回相同的结果。 (如果需要稳定的结果,请改用findFirst()
。 )
Stream
其中包含此流的元素, Double
为Double
。
这是一个
DoubleStream
的构建器。
返回空序列
DoubleStream
。
返回包含单个元素的顺序
DoubleStream
。
返回其元素为指定值的顺序有序流。
返回有序无限连续DoubleStream
由函数的迭代应用产生f
到初始元素seed
,产生Stream
组成的seed
, f(seed)
, f(f(seed))
等
第一元件(位置0
在) DoubleStream
将是提供seed
。 对于n > 0
,位置n
处的元素将是将函数f
应用于位置n - 1
处的元素的n - 1
。
施加的作用f
为一个元件f
用于随后的元件。
next
函数迭代应用于初始元素DoubleStream
生成的顺序有序DoubleStream
,条件是满足给定的hasNext
谓词。
一旦hasNext
谓词返回false,流就会终止。
DoubleStream.iterate
应该生成与相应的for循环生成的元素序列相同的元素:
for (double index=seed; hasNext.test(index); index = next.applyAsDouble(index)) { ... }
如果hasNext
谓词不保留种子值,则结果序列可能为空。 否则,第一个元素将是提供的seed
值,下一个元素(如果存在)将是将next
函数应用于seed
值的结果,依此类推,直到hasNext
谓词指示流应终止。
将hasNext
谓词应用于元素next
函数应用于该元素的操作的操作。next
函数的操作发生在将hasNext
谓词应用于后续元素的操作之前 。 对于任何给定元素,可以在库选择的任何线程中执行动作。
DoubleSupplier
生成。
这适用于生成恒定流,随机元素流等。
创建一个延迟连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。
如果两个输入流都是有序的,则对所得到的流进行排序,如果任一输入流是并行的,则对其进行并行。
关闭结果流时,将调用两个输入流的关闭处理程序。
此方法对两个输入流进行操作,并将每个流绑定到其源。 结果,对输入流源的后续修改可能不会反映在级联流结果中。
变量和类型 | 接口 | 描述 |
---|---|---|
static interface |
|
DoubleStream 可变构建器。
|
变量和类型 | 方法 | 描述 |
---|---|---|
boolean |
|
返回此流的所有元素是否与提供的谓词匹配。
|
boolean |
|
返回此流的任何元素是否与提供的谓词匹配。
|
|
|
返回描述此流元素的算术平均值的
OptionalDouble ,如果此流为空,则返回空可选。
|
|
|
返回
Stream 其中包含此流的元素,
Double 为
Double 。
|
static |
|
返回
DoubleStream 的构建器。
|
<R> R |
|
对此流的元素执行
|
static |
|
创建一个延迟连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。
|
long |
|
返回此流中元素的数量。
|
|
|
返回由此流的不同元素组成的流。
|
default |
|
如果对此流进行排序,则返回在删除与给定谓词匹配的元素的最长前缀之后由该流的其余元素组成的流。
|
static |
|
返回空序列
DoubleStream 。
|
|
|
返回由与此给定谓词匹配的此流的元素组成的流。
|
|
|
返回 OptionalDouble 描述流的一些元件,或一个空OptionalDouble 如果流是空的。 |
|
|
返回 OptionalDouble 描述此流的第一个元素,或空OptionalDouble 如果流是空的。 |
|
|
返回一个流,该流包含将此流的每个元素替换为通过将提供的映射函数应用于每个元素而生成的映射流的内容的结果。
|
void |
|
对此流的每个元素执行操作。
|
void |
|
对此流的每个元素执行操作,确保以具有已定义的遭遇顺序的流的遭遇顺序处理每个元素。
|
static |
|
返回无限顺序无序流,其中每个元素由提供的
DoubleSupplier 生成。
|
static |
|
返回通过将给定的
next 函数迭代应用于初始元素
DoubleStream 产生的顺序有序
DoubleStream ,条件是满足给定的
hasNext 谓词。
|
static |
|
返回有序无限连续
DoubleStream 由函数的迭代应用产生
f 到初始元素
seed ,产生
Stream 组成的
seed ,
f(seed) ,
f(f(seed)) 等
|
|
|
返回由此流的元素组成的流,截断长度不超过
maxSize 。
|
|
|
返回一个流,该流包含将给定函数应用于此流的元素的结果。
|
|
|
返回
IntStream 其中包含将给定函数应用于此流的元素的结果。
|
|
|
返回
LongStream 其中包含将给定函数应用于此流的元素的结果。
|
<U> |
|
返回一个对象值
Stream 它包含将给定函数应用于此流元素的结果。
|
|
|
返回描述此流的最大元素的
OptionalDouble ,如果此流为空,则返回空的OptionalDouble。
|
|
|
返回描述此流的最小元素的
OptionalDouble ,如果此流为空,则返回空的OptionalDouble。
|
boolean |
|
返回此流的元素是否与提供的谓词匹配。
|
static |
|
返回包含单个元素的顺序
DoubleStream 。
|
static |
|
返回其元素为指定值的顺序有序流。
|
|
|
返回由此流的元素组成的流,另外在每个元素上执行提供的操作,因为元素是从结果流中消耗的。
|
double |
|
使用提供的标识值和
|
|
|
使用
OptionalDouble (如果有)。
|
|
|
在丢弃流的第一个
n 元素后,返回由此流的其余元素组成的流。
|
|
|
以排序顺序返回由此流的元素组成的流。
|
double |
|
返回此流中元素的总和。
|
|
|
返回
DoubleSummaryStatistics 描述有关此流元素的各种摘要数据。
|
default |
|
如果对此流进行排序,则返回一个流,该流包含从此流中获取的与给定谓词匹配的最长元素前缀。
|
double[] |
|
返回包含此流的元素的数组。
|