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

  • 相关阅读:
    HTML DOM教程 14HTML DOM Document 对象
    HTML DOM教程 19HTML DOM Button 对象
    HTML DOM教程 22HTML DOM Form 对象
    HTML DOM教程 16HTML DOM Area 对象
    ubuntu 11.04 问题 小结
    VC6.0的 错误解决办法 小结
    boot.img的解包与打包
    shell里 截取字符串
    从零 使用vc
    Imagemagick 对图片 大小 和 格式的 调整
  • 原文地址:https://www.cnblogs.com/Swagger-Ranger/p/10669975.html
Copyright © 2011-2022 走看看