Stream流基本使用

stream流

stream是对集合对象功能的增强,与Lambda表达式结合,提高编程效率,间接性和程序可读性。

流程:

  1. 将集合转换为stream流(或者创建流)。

  2. 操作stream流(中间操作.终端操作)。

    stream流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果

流的创建

生成流有五种方式:

  1. stream创建

    Stream<Integer> stream = Stream.of(1, 4, 2, 54);
  2. Collection集合创建

    ArrayList<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(3);
    list.add(5);
    list.add(7);
    Stream<Integer> listStream = list.stream();
  3. Array数组创建

    int[] ints = {1,4,6,8};
    IntStream intStream = Arrays.stream(ints);
    通过 Arrays.stream方法生成流,该方法产生的流是数值流(IntStream)而不是stream。
    
    使用数值流可以避免计算过程中拆箱装箱,提高性能。
    
    Stream API提供了mapToInt 、 mapToDouble 、mapToLong 三种方式将对象流转换为对应的数值流,同时提供boxed方法将数值流转换为对象流
  4. 文件创建

    try {
        Stream<String> fileStream = Files.lines(Paths.get("data.txt"), Charset.defaultCharset());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

    通过Files.line方法得到一个流,并且得到的每个流是给定文件中的一行

  5. 函数创建

    Stream<Integer> iterateStream = Stream.iterate(0, n -> n + 2).limit(5);
    iterateStream.forEach(System.out::println);

    iterate 方法接收两个参数,第一个为初始化值,第二个为函数进行的操作,iterate 生成的流为无限流,所以使用limit进行截断,最后只生成五个偶数

    Stream<Double> generateStream = Stream.generate(Math::random).limit(5);
    generateStream.forEach(System.out::printl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值