Stream API

  1. 概述
    数据渠道、管道,用于操作数据源(集合、数组等)所生成的元素序列。

    集合讲的是数据,流讲的是计算

    即一组用来处理数组,集合的API。

  2. 特点
    Stream 不是数据结构,没有内部存储,自己不会存储元素。

    Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。

    Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

    不支持索引访问。

    延迟计算

    支持并行

    很容易生成数据或集合

    支持过滤,查找,转换,汇总,聚合等操作。

  3. 创建流的方式


		//数组  Stream.of
		String[] strings = {"a","b","c","d"};
		Stream<String> stream1 = Stream.of(strings);
		
		//集合
		List<String> strings2 = Arrays.asList(strings);
		Stream<String> stream2 = strings2.stream();
		
		//Stream.generate创建
		//创建无限流,里面全是1,通过limit 限制条数5条
		Stream<Integer> generate = Stream.generate(()->1);
		generate.limit(5).forEach(x -> System.out.println(x));
		
		//Stream.iterate来创建
		//创建一个无限流,里面的数据有序,从2开始步长为3
		Stream<Integer> iterate = Stream.iterate(2, x ->x+3);
		iterate.limit(5).forEach(x -> System.out.println(x));
		
		//通过已有Api
		String string = "abc";
		IntStream chars = string.chars();
		chars.forEach(x -> System.out.println(x));
  1. 转换算子
    常用:
    limit : 取集合中的前几条数据
    fiter : 对元素进行过滤筛选,不符合条件就不要了
    distinct : 去重
    skip : 跳过多少元素
    map : 更改数据 。 在遍历集合的过程中,对元素进行操作,比如判断集合元素是否是a 返回boolean
    sorted : 排序

··注意只用此算子是不会真正进行计算的,只有后边调用动作算子才会真正计算。

  1. 动作算子
    循环 forEach

    计算 min、max、count、average

    匹配 anyMatch、allMatch、noneMatch、findFirst、findAny

    汇聚 reduce

    收集器 collect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值