集合作为Stream数据源
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Stream<Integer> stream = numbers.stream();
Stream<Integer> integerStream = numbers.parallelStream();
- parallelStream 是多线程的,stream是单线程的,一般来说parallelStream 的效率会高点
- parallelStream 适用的场景是CPU密集型的,如果服务器CPU负载很高,你还随便用并行流,那并没有什么用,也不要在多线程中使用它,大家都来抢占CPU资源对提升效率没有帮助,反而会加大线程切换开销
- parallelStream 并不是线程安全的,使用的时候最好保证每条处理结果是无状态且独立 parallelStream
- 默认使用的common ForkJoinPool,如果其他功能也在使用这个池,可能导致程序其他部分阻塞,所以说用parallelStream 需要了解它的限制
数组作为Stream数据源
String[] str = new String[]{"1","2"};
Stream<String> stream = Arrays.stream(str);
使用Stream类创建数据源
- Stream.of()
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
- Stream.iterate()
// 第一个参数是初始值、第二个参数决定下一个生成值的规则
Stream.iterate(1,new UnaryOperator<Integer>(){
@Override
public Integer apply(Integer integer) {
return integer.intValue()+1;
}
}).limit(5).forEach(System.out::println);
- Stream.generate()
// 生成100内的随机数
Stream.generate(()-> Math.random() * 100).limit(5).forEach(System.out::println);
- Stream.build()
Stream.<Integer>builder().add(1).add(2).build().forEach(System.out::println);
网友评论