Stream流技术

特点:对集合中的数据进行各种各样的运算和操作  例如过滤 排序 映射 

集合关心的是数据的存储;Stream流关注集合中存储数据的运算和操作

  1. 使用步骤:
    1. 单线程流:stream()
    2. 多线程流:parallelStream()

        细节点

  1. 获取一个流对象:Stream<Student> stream = list.stream();(加工)
  2. stream.filter(s->s.getAge().forEach(s->sout(s)));//lambda表达式s是学生集合对象
  3. 如果不进行终止操作,流的处理则不会运行stream.filter(s->s.getAge().forEach(s->sout(s)))
    1. 此语句执行完成后,filter拿到了满足条件的流对象  ;filter依然是一个流对象
  4. 返回一个只有操作接口的一个新的对象.流对象不是数据
    1. Stream<Student>  stream = list.stream();流拿到了所有的集合对象   

  5. 流不改变数据源

常用的中间操作方法:

  1. 所有的中间操作都必须写终止操作;一旦进行终止操作后就不再返回流对象了
  2. filter(Predicate pre)  pre是过滤的条件
  3. stream.sorted() 方法 用来对集合中的元素进行排序    需要实现compareable()方法才能使用
  4. stream.limit(int n):限定获取前n个元素 
  5. skip(long n):跳过前n条   先跳过前n条再获取limit()
  6. distinct():用来对集合中的元素去重  根据hashcode 和equals方法判断是否相同;重写equals 和hashcode方法
  7. map(): 映射: 用来提取元素的部分信息;
    1. stream.filter(s->getAge()>=25).forEach(System.out::println);
    2. map()使用时需要传入一个function接口类型的参数    
      1. stream.filter(s->s.getAge()>=25).map(s->s.getname()).forEach(System.out::println);
      2. map()操作之后;流中持有的元素的类型会发生变化变成了name的流

常用终止操作

  1. forEach(con ):遍历最终操作的结果
  2. allMatch(Predicate) 判断是否全部符合某一个指定条件 返回boolean
  3. anyMatch(Predicate)判断集合中至少有一个符合条件的元素
  4. count()获取集合中的元素个数
  5. max();min()获取集合中的最大最小值
  6. collect() 返回一个新的List集合  stream.collect(Collectors.)
  7. 将stream流的数据收录到一个List<students>集合中
  8. Collectors.averagingDouble  返回一个double
  9. Collectors.summingInt()
  10. Collectors.groupingBy()对学生分组

 

 12.

13. 对大于60的学生收集,再分组  partitioningBy()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值