- Stream 接口
Stream
Stream 由三部分构成
- 源
- 零个或多个中间操作 (返回 Stream )
- 终止操作
Stream 操作分类
- 惰性求值
- 及早求值
Stream 对象创建
- 通过静态方法创建
1 | Stream stream1 = Stream.of("hello", "kitty", "hello kitty"); |
- 通过 Arrays 的方法创建
1 | String[] myArray = new String[] {"hello", "kitty", "hello kitty"); |
- 通过 List 的 stream 方法创建
1 | List<String> list = Arrays.asList("hello", "kitty", "hello kitty"); |
Stream 类型转换
- 通过 Stream 的 toArray 方法, 将 String Stream 转换成 String 数组
1 | Stream<String> stream = Stream.of ( "hello", "kitty", "hello kitty" ); |
- 通过 Stream 的 collect 方法, 将 Stream 转换为 List
1 | Stream<String> stream = Stream.of ( "hello", "kitty", "hello kitty" ); |
collect 还有另一种重载方法
1 | <R> R collect(Supplier<R> supplier, |
应该可以理解为:
supplier 创建一个新 List
accumulator 把 Stream 每个内容加入进 List
把 List 的值转移到当前 List (我们需要的 List)
例1
2
3Stream<String> stream = Stream.of ( "hello", "kitty", "hello kitty" );
LinkedList<String> strings = stream.collect ( () -> new LinkedList<String> (), (a, b) -> a.add ( b ), (a, b) -> a.addAll ( b ) );
//List<String> strings = stream.collect ( LinkedList::new, LinkedList::add, LinkedList::addAll );