- stream 是干什么的
Stream不是集合元素,他不是数据结构并不保存数据,它是有关算法和计算的,更像一个高版本的iterator。
- 数据只能遍历一次,遍历一次就用尽。
- 只有三种基本类型的stream,LongStream,IntStream,DoubleStream。基本类型在大数据量情况下比对应装箱类型性能好。
- collect收集器的步骤
- 如何创建结果容器(比如说,使用ArrayList::new方法)
- 如何把单个元素添加到容器中(比如使用ArrayList::add方法)
- 如何把一个结果集合并到另一个中(比如使用ArrayList::addAll方法)
- Collector是一个包含了生产者,添加器,以及合并器在内的接口,Collectors.toList()生成Collector的实现对象
- 创建stream
#Collection接口有stream方法
Stream<String> words = Stream.of("gently", 'cammsia", "the")
String [] wordsArray = {"gently", 'cammsia", "the"}
Stream<String> words = Stream.of(wordsArray)
#generate 方法接受一个无参数函数
Stream<String> echoes = Stream.generate(()->"Echo")
Stream<Double> randoms = Stream.generate(Math::random)
#f(f(f(seed)))
Stream<BigInteger> integers = Stream.iterate(BigInteger.ZERO, n -> n.add(BigInteger.ONE))
Stream<String> words = Pattern.compile("[\\P{L}]+").splitAsStream(content)
#Stream继承了Autoacloseable
try(Stream<String> lines = Files.lines(path)) {
}