1、创建 Stream方式一:通过集合
Java8 中的 Collection 接口被扩展,提供了两个获取流的方法
(1)default Stream<E> stream() : 返回一个顺序流
(2)default Stream<E> parallelStream() : 返回一个并行流
package com.yinggu.demo10;
import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import org.junit.Test;
import com.yinggu.data.EmployeeData;
import com.yinggu.domain.Employee;
* @author 黑猴子的家
* https://www.jianshu.com/u/37fd8e2dff4c
* 此类用于演示创建Stream
public class TestStreamCreate {
// 通过集合获取Stream对象
@Test
public void test1() {
List<Employee> list = EmployeeData.getData();
// 根据list集合获取Stream对象
Stream<Employee> stream = list.stream();
stream.forEach(System.out::println);
System.out.println("---------------------------");
}
}
2、创建 Stream方式二:通过数组
Java8 中的 Arrays 的静态方法 stream() 可以获取数组流
static <T> Stream<T> stream(T[] array): 返回一个流
重载形式,能够处理对应基本类型的数组
public static IntStream stream(int[] array)
public static LongStream stream(long[] array)
public static DoubleStream stream(double[] array)
// 通过数组获取Stream对象
@Test
public void test2() {
Integer[] arr = { 10, 20, 30 };
// 根据数组获取Stream对象
//IntStream stream1 = (IntStream) Arrays.stream(arr);
Stream<Integer> stream2 = Arrays.stream(arr);
stream2.forEach(System.out::println);
System.out.println("---------------------------");
}
3、创建 Stream方式三:通过Stream的of()
可以调用Stream类静态方法 of(), 通过显示值创建一个流。
它可以接收任意数量的参数。
public static<T> Stream<T> of(T... values) : 返回一个流
// 通过制定的列表值获取Stream对象
@Test
public void test3() {
Stream<String> stream = Stream.of("john", "lucy", "lily");
stream.forEach(System.out::println);
System.out.println("---------------------------");
}
4、创建 Stream方式四:创建无限流
可以使用静态方法 Stream.iterate()
和 Stream.generate()
, 创建无限流。
迭代 public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f)
生成public static<T> Stream<T> generate(Supplier<T> s)
// 无限流
@Test
public void test4() {
//匿名内部类
// Stream.generate(new Supplier<Double>() {
// @Override
// public Double get() {
// // TODO Auto-generated method stub
// return Math.random();
// }
// });
//Lambda 表达式
//Stream.generate( ()-> Math.random());
Stream<Double> stream = Stream.generate(Math::random);
stream.limit(5).forEach(System.out::println);
//stream.forEach(System.out::println);
System.out.println("---------------------------");
}
网友评论