前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java8 Stream 创建流

Java8 Stream 创建流

作者头像
喜欢天文的pony站长
发布2020-10-09 15:32:02
6300
发布2020-10-09 15:32:02
举报
文章被收录于专栏:RabbitMQ实战RabbitMQ实战
  • 创建流的方法有很多,常见的如:
    1. 从Collection集合创建
    2. 根据数值范围创建数值流
    3. 从一系列值
    4. 从数组
    5. 从文件
    6. 由函数来生成无限流

一、 从Collection集合

代码语言:javascript
复制
Stream<Integer> stream = new HashSet<Integer>()
                .stream();
Stream<String> stringStream = new ArrayList<String>()
                .stream();

二、 根据数值范围创建数值流

代码语言:javascript
复制
IntStream intStream = IntStream.rangeClosed(1, 100);

三、 从一系列值

  • Stream提供了一个静态方法来根据一系列值生成一个流
代码语言:javascript
复制
Stream<Integer> integerStream = Stream.of(1, 2, 3);
Stream<String> stringStream = Stream.of("喜欢", "天文", "的", "pony", "站长");
AppleStream apple = new AppleStream();
Stream<AppleStream> appleStream = Stream.of(apple, apple, apple);

四、 从数组

代码语言:javascript
复制
//重载了支持特定的基本类型流
IntStream intStream = Arrays.stream(new int[]{1, 2, 3});
LongStream longStream = Arrays.stream(new long[]{1L, 2L, 3L});
DoubleStream doubleStream = Arrays.stream(new double[]{1D, 2D, 3D});
        
Stream<String> stringStream = Arrays.stream(new String[]{"喜欢", "天文", "的", "pony", "站长"});
AppleStream apple = new AppleStream();
Stream<AppleStream> appleStream = Arrays.stream(new AppleStream[]{apple, apple, apple});

五、 从文件

  • 准备文件
代码语言:javascript
复制
Stream<String> linesStream = Files.lines(Paths.get("fileStream.txt"));
linesStream.forEach(System.out::println);
  • 结果

六、由函数来生成无限流

  • Java8提供了Stream.iterate()Stream.generate()来生成无限流,这两个方法会根据给定的表达式来生成包含无限个数据的流,所以一般结合limit()来使用。
    1. 迭代: Stream.iterate(T seed,Function<T, R> apply)
    2. 生成: Stream.generate(Supplier<T> s)
代码语言:javascript
复制
// 给定一个初始值seed,和一个`接收一个入参,并带有返回值的函数`
Stream.iterate(10, x -> x + 5)
        .limit(10)
        .forEach(System.out::println);
代码语言:javascript
复制
10
15
20
25
30
35
40
45
50
55
代码语言:javascript
复制
Random random = new Random();
// 接收一个 `无入参,有返回值` 的函数
Stream.generate(() -> random.nextInt(100))
        .limit(10)
        .forEach(System.out::println);
代码语言:javascript
复制
60
56
6
61
7
30
97
64
26
54

欢迎在评论区留下你看文章时的思考,及时说出,有助于加深记忆和理解,还能和像你一样也喜欢这个话题的读者相遇~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 喜欢天文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 从Collection集合
  • 二、 根据数值范围创建数值流
  • 三、 从一系列值
  • 四、 从数组
  • 五、 从文件
  • 六、由函数来生成无限流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档