文章16 | 阅读 6525 | 点赞0
流可分为有限流和无限流两种, 有限流是指流中元素个数有限, 无限流指流中元素个数无限. 无论是有限流和无限流, 在进行终端操作之前都不会进行中间操作处理.
通过list/set 自带的stream(), parallelStream() API可很方法的创建流.
// 创建有限流1: 通过集合(list,set) 获取流, Map 不能获取流
@Test
public void createByListSet(){
// 使用list 创建并行流
List<String> list = new ArrayList<>();
Stream<String> listParallelStream = list.parallelStream();
// 使用set 创建串行流
Set<String> set = new HashSet<>();
Stream<String> setStream = set.stream();
}
数组可通过Arrays.stream()方法构建流, stream 方法有很多重载方法可用.
// 创建有限流2: 通过数组创建流
@Test
public void createByArray(){
String[] array = new String[3];
Stream<String> arrayStream = Arrays.stream(array);
long[] longArray = new long[3];
LongStream longStream = Arrays.stream(longArray);
int[] intArray = new int[3];
IntStream intStream = Arrays.stream(intArray);
double[] doubleArray = new double[3];
DoubleStream doubleStream = Arrays.stream(doubleArray);
}
Stream.of 只能接收数组作为参数, 接收集合会把整个集合当做流中的一个元素.
// 创建有限流3: 通过Stream.of 方法创建流,参数为数组
@Test
public void createByConstants(){
Stream<String> stream = Stream.of("java", "Linux", "mysql", "nginx");
Stream<String> stream2 = Stream.of(new String[]{"a", "b", "c", "d"});
stream.forEach(System.out::println);
stream2.forEach(System.out::println);
}
// 创建有限流4: 通过文件获取流
@Test
public void createByFile() throws Exception{
Stream<String> fileStream = Files.lines(Paths.get("pom.xml"));
fileStream.forEach(System.out::println);
}
// 创建无限流1: 生随机生产5个随机数
@Test
public void test_generate(){
Stream<Double> stream = Stream.generate(Math::random).limit(5);
stream.forEach(System.out::println);
}
迭代式创建类似于递归
// 创建无限流2: 迭代式创建,(无限流通常需要配合limit使用,否则会无限创建)
@Test
public void test_iterate(){
Stream<Integer> stream = Stream.iterate(0, n -> n + 2).limit(5);
stream.forEach(System.out::println);
}
//测试斐波那契数列
@Test
public void test_febinache(){
Stream<Integer> stream = Stream
.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]})
.limit(8)
.map(t -> t[0]);
stream.forEach(System.out::println);
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://zongf.blog.csdn.net/article/details/90057532
内容来源于网络,如有侵权,请联系作者删除!