继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第八天+Lambda的Stream流

ccLoveStudy
关注TA
已关注
手记 82
粉丝 6
获赞 5

课程名称:一课掌握Lambda表达式语法及应用

课程章节:第四章第二节

主讲老师:大牧莫邪


课程内容:

今天主要学了一Lambda中的Stream的流的使用和注意的地方

6:Stream概述

public class Test2 {
   public static void main(String[] args) {
       List<String> accounts = new ArrayList<>();
       accounts.add("shubei");
       accounts.add("hh");
       accounts.add("beitah");

       //1.1:业务要求,长度大于等于5的有效账号
       for (String account : accounts) {
           if(account.length() >= 5){
               System.out.println("有效账号是" + account);
           }
       }

       //1.2:迭代方式
       Iterator<String> it = accounts.iterator();
       while(it.hasNext()){
           String account = it.next();
           if(account.length() >= 5){
               System.out.println("有效账号是:" + account);
           }
       }

       //1.3:stream结合lambda方式,完成业务处理
       List validList = accounts.stream().filter(s -> s.length() >= 5).collect(Collectors.toList());
       System.out.println(validList);
   }
}

7:Stram API

/**
* 1:聚合操作
*
* 2:stream的处理流程
*    数据源
*    数据转换
*    获取结果
*
* 3:获取Stream对象
*    1:从集合或者数组中获取
*         Collection.stream(),如account.stream()
*         Collection.parallelStream()  获取一个支持并发的Stream对象
*         Arrays.stream(T t)
*    2:BufferReader
*          BufferRader.lines() -> stream()
*    3:静态工厂
*          java.util.stream.IntStream.range()
*          java.nio.file.Files.walk()
*    4:自动构建
*          java.util.Spliterator
*    5:更多的方式
*          Random.ints()
*          Pattren.splitAsStream()
* 4:中间操作API
*      中间操作是一个Stream,中间操作可以是一个或者多个的中间操作,需要注意的是,
*      中间操作只记录操作方式,不做具体执行,知道结束操作发生时,才做数据的最终执行
*      中间操作,就是业务逻辑处理
*      中间操作过程:无状态:数据处理时,不受前置中间操作的影响
*                      map/fiter/peek/parallel/sequential/unordered
*                   有状态:数据处理时,受前置中间操作的影响
*                      distinct/sorted/limit/skip
* 5:终结操作/结束操作
*      需要注意:一个Stream对象,只能有一个终结操作,这个操作一旦发生,就会真实处理数据,生成对应数据。
*      终结操作:非短路操作:当前的Stream对象必须处理完集合中所有数据,才能得到处理结果。
*                  forEach/forEachOrdered/toArrav/reduce/collect/min/max/count/iterator
*              短路操作:当前的stream对象在处理过程中,一旦满足某个条件,就可以得到结果。
*                  anyMatch/allMatch/noneMatch/findFirst/findAny等
*                  Short-circuiting,无限大的stream->有限大的stream
*
*/



课程收获:

看看这记的东西,看看这记的,这只剩下记的东西了,因为脑子记不住,Lambda的Stream流对于初学者还是同样的不友好啊,什么迭代一类的,之前根本完全不知道,这才知道,还是继续整吧,其次,学这门课,必须手眼并动,手不仅得记,还得按暂定,跟着老师的原始速度就有点跟不上,更不要说开倍速了,开倍速就等于过家家了


加油吧,同志们!


http://img2.sycdn.imooc.com/63578926000167d617431039.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP