1、Stream.of()的使用
Stream.of()
方法,其生成的Stream是有限长度的,Stream的长度为其内的元素个数。
of(T... values):返回含有多个T元素的Stream
of(T t):返回含有一个T元素的Stream
例如,
import java.util.*;
import java.util.stream.IntStream;
public class Demo {
public static void main(String[] args) {
IntStream intStream = IntStream.of(10, 20, 30, 40, 50);
intStream.forEach(System.out::println);
}
}
2、IntStream.range()的使用
IntStream range(int startInclusive,int endExclusive)
以1为增量步长从startInclusive(包括)到endExclusive(不包括)返回顺序的有序IntStream。
例如,
import java.util.*;
import java.util.stream.IntStream;
class Demo {
public static void main(String[] args)
{
// 创建 IntStream
IntStream stream = IntStream.range(6, 10);
stream.forEach(System.out::println);
}
}
3、Stream.of()和IntStream.range()区别
通过下面代码可以看出Stream.of()
和IntStream.range()
区别.
例如,
import java.util.*;
import java.util.stream.IntStream;
public class Demo {
public static void main(String[] args) {
System.out.println("#1");
IntStream.of(0, 1, 2, 3)
.peek(e -> System.out.println(e))
.sorted()
.findFirst();
System.out.println("\n#2");
IntStream.range(0, 4)
.peek(e -> System.out.println(e))
.sorted()
.findFirst();
}
}
输出:
#1
0
1
2
3
#2
0
区别:
IntStream.range()
返回一个从startInclusive(包含)
到endExclusive (不包含)的顺序有序的IntStream,递增一步为1,说明它已经排序。既然已经排序了,那么下面的.sorted()
中间操作什么都不做是有道理的。所以peek()
只在第一个元素上执行(因为最后的操作只需要第一个元素)。
Stream.of()
不一定已排序(并且该of()方法不检查它们是否已排序)。因此,.sorted()
必须遍历所有元素才能产生排序Stream,这允许findFirst()
终端操作返回排序Stream的第一个元素。结果,peek对所有元素都执行,即使最后的操作只需要第一个元素。