
有些人觉得Stream和IO流中的一些类很相似,其实二者没有什么关系。我们使用Stream更多是为了提高程序和代码的效率。在之前已经将讲过集合创建Stream的办法,其实还有一些别的方式可以创建Stream,比如Collection、数组、静态方法of(),下面就这些创建的方法分别带来详细讲解。
1.通过Collection
在Java8中,Collection 接口被扩展,提供了两个获取流的默认方法,如下所示。
1 2 3 4 5 6 | default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false );
}
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true );
}
|
其中,stream()方法返回一个顺序流,parallelStream()方法返回一个并行流。
我们可以使用如下代码方式来创建顺序流和并行流。
1 2 3 | List<String> list = new ArrayList<>();
list.stream();
list.parallelStream();
|
2.数组创建Stream
1 2 3 4 5 6 7 8 9 | @Test
public void test2(){
int[] arr = new int[]{1,2,34,4,65,7,87,};
IntStream intStream = Arrays.stream(arr);
Student[] students = StudentData.getArrStudents();
Stream<Student> stream = Arrays.stream(students);
}
|
3.静态方法of()
1 2 3 4 5 6 7 8 | public static<T> Stream<T> of(T t) {
return StreamSupport.stream( new Streams.StreamBuilderImpl<>(t), false );
}
@SafeVarargs
@SuppressWarnings( "varargs" )
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
|
可以看到,在Stream类中,提供了两个of()方法,一个只需要传入一个泛型参数,一个需要传入一个可变泛型参数。
我们可以使用下面的代码示例来使用of方法创建一个Stream流。
1 | Stream<String> strStream = Stream.of( "a" , "b" , "c" );
|
以上就是java中创建Stream的几种方法,这几种方法比较常见,使用起来操作难度也不是很大,想要了解其他方法的可以在课后进行搜索。