1. 简介

在本文中,我们将介绍IntStream,LongStream和DoubleStream这些基本类型对应的接口。分别对应基本类型int,基本类型long和基本类型double

这些接口有许多有用的方法。我们可以使用接口中静态方法初始化他们。

2. IntStream

java.util.stream.IntStream是基本类型int的流。 可以使用顺序和并行操作来执行诸如maxaverage之类的合计操作。

这里给大家介绍两个主要的方法:

static IntStream range(int startInclusive, int endExclusive)

从startInclusive(包括)到endExclusive(排除)以1的递增,返回一个有序的IntStream。

static IntStream rangeClosed(int startInclusive, int endInclusive)

这个方法包含endExclusive。

其他方法和Stream一样,这里就不介绍了。

下面我们来看一个简单的示例

System.out.println("rangeClosed:");
IntStream.rangeClosed(1, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println();
System.out.println("range:");
IntStream.range(1,5).map(n->n*n).forEach(s->System.out.print(s +" "));

输出如下:

rangeClosed:
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 
range:
1 4 9 16 

3. LongStream

java.util.stream.LongStream是基本类型long的流,它的方法和IntStream类似。

System.out.println("rangeClosed:");
LongStream.rangeClosed(1, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println();
System.out.println("range:");
LongStream.range(1,5).map(n->n*n).forEach(s->System.out.print(s +" "));

输出如下:

rangeClosed:
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 
range:
1 4 9 16 

4. DoubleStream

java.util.stream.DoubleStream是基本类型doublue的流。DoubleStream没有range想过的方法。

我们这里写一个新的例子:

System.out.println("of:");
DoubleStream.of(5.33,2.34,5.32,2.31,3.51).map(d->d*1.5).forEach(s->System.out.print(s +" "));
System.out.println();
System.out.println("average:");
double val = DoubleStream.of(12.1,11.2,13.3).average().getAsDouble();
System.out.println(val);
System.out.println("max:");
val = DoubleStream.of(12.1,11.2,13.3).max().getAsDouble();
System.out.println(val);
System.out.println("filter:");
DoublePredicate range = d -> d > 12.11 && d < 12.99;
DoubleStream.of(12.1,11.2,12.3).filter(range).forEach(d->System.out.print(d));

输出如下:

of:
7.995 3.51 7.98 3.465 5.265 
average:
12.200000000000001
max:
13.3
filter:
12.3

5. 总结

在本文中,我们介绍了IntStreamLongStreamDoubleStream这些基本类型对应的接口。介绍了Stream流没有的rangeClosed, range方法。

与往常一样,可以在GitHub上获得代码示例。