zoukankan      html  css  js  c++  java
  • Java Lambda表达式 Stream

    Stream

    Stream不是集合元素,它不是数据结构并不保存数据,而是有关算法和计算的,更像是一个高级版本的Iterator,原始版本的Iterator,用户只能显式地一个一个遍历元素并对其进行操作,Stream则只需要对其包含的元素执行什么操作,比如”过滤掉长度大于10的字符串“,"获取每个字符串的首字母”等,Stream会隐式地在内部进行遍历,并作出相应地数据转换

    用法

    • Stream.of("a", "b", "c"):构造一个字符串流
    • map
    • collect(Collectors.toList/toSet...)
            **
             * lambda写法
             * Stream.of构造一个流,流的类型编译器会自动判断
             * map(s->s.toUpperCase()),map类型转换,将一个类型的流转换称另一类型,map只接受一个指定类型的参数这里是String
             * s->s.toUpperCase(),参数以及要做的操作,参数会返回可以不是同意类型,但必须是Function接口的一个实例
             * collect(Collectors.toList():由Stream里的值生成一个列表,Collectors是Stream的一个全静态方法类,实现各种有用的集合操作,例如将元素累积到集合中,根据各种标准概括元素等
             * Function 就是一个函数,其作用类似于数学中函数的定义 ,(x,y)即y=f(x)跟<T,R>的作用几乎一致。
             */
            Collection<String> collection = Stream.of("a", "b", "c").map(s->s.toUpperCase()).collect(Collectors.toList());
    
            assert Arrays.asList("A", "B", "C").equals( collection):"断言不通过";
    
    • filter:Stream的过滤操作,传入一个Predicate的函数接口,Predicate只有一个判断的boolean返回值方法test,所以一般都写成lambda形式
    Collection<String> collection = Stream.of("0abc", "abc", "bcc").filter(value->Character.isDigit(value.charAt(0))).collect(Collectors.toList());
    assert Arrays.asList("0abc").equals(collections) : "两者不相等...";
    
    

    实例:

    本博客为Swagger-Ranger的笔记分享,文中源码地址: https://github.com/Swagger-Ranger
    欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com

  • 相关阅读:
    Matlab .asv是什么文件
    matlab中常数下的点是什么意思
    Matlab 根号的输入
    Paired t-test
    气血
    getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()
    ViewPager实现滑动翻页效果
    ViewPager结合Fragment进行无限滑动
    ViewPager结合view无限滑动
    Android的ToolBar
  • 原文地址:https://www.cnblogs.com/Swagger-Ranger/p/10669975.html
Copyright © 2011-2022 走看看