zoukankan      html  css  js  c++  java
  • 1.Lambda表达式

    1.Lambda表达式

    语法糖 也叫作糖衣语法,增强了代码的可读性 避免了出错的机会
     但是,这种语法对于语言的功能并没有增强

    和Lambda一样的糖衣语法还有:(1)泛型 <>(2)自动装箱拆箱(3)增强for循环

    基本格式
                (参数列表)->{方法体};
      解释:
        1. "->" 表示 转为/成为左边指定输入的参数 右边是Lambda的方法主体

    注意:
      1. 只有是函数接口(当一个接口中 只包含一个方法时 该接口叫做函数接口) 才能使用Lambda表达式替换

     格式:
                ()->{}
                1.(参数列表)->表达式
                  花括号可省略 省略后 不能书写return关键字
                2.形参列表的类型声明 可省略 java在编译的时候 会根据上下文 自动推断出参数类型
                3.小括号可省略 形参列表是一个的时候可省略
                4.return关键字
                    如果是单一表达式 可不写
                    如果写了return 就必须写花括号

    2.Lambda表达式的基本应用

           2.1 线程中的使用
            2.2 forEach方法在集合中的使用
                Iterable 1.8新增方法
                    default void forEach(Consumer<? super T> action)
                Map 1.8新增方法
                    default void forEach(BiConsumer<? super K,? super V> action)  
            2.3 集合的排序
                List集合出现自有的排序方法sort() 可根据Comparator比较器顺序进行排序
            2.4 数组的排序
            2.5 特殊的双冒号:: 方法引用
                这是java8的Lambda表达式写法 叫做方法引用 (method references)
                是Lambda的简写形式
                注意:
                    1.是Lambda的简写形式
                    2.调用一个已存在的方法
                    3.当我们需要引用的方法传入其他类型参数的时候 不适合
                语法:
                    左边是容器(类名/实例名)
                    中间::
                    右边是要调用的方法名
                1.非静态方法调用
                    对象的引用::方法名
                    想要调用该对象所属类的一个已存在方法

                        p::getName;
                2.静态方法调用
                    类名::方法名

                3.构造方法调用
                    类名::new

    2.局部内部类中变量的修饰符
        final修饰符可省略
        内部类在访问 它所在的方法中的变量时 该变量必须是常量(被final修饰的)
        jdk1.8之后 省略了final修饰符 但是本质上该变量还是final的

    3.Stream接口
        和Iterator很像
        Stream (流) 和 InputStream/OutputStream 没有关系

    创建一个Stream 需要指定一个数据源 比如Collection的子类
            List 和 Set 支持,Map不支持

    3.1去重

    3.1是否包含

    3.3排序

    3.4返回第一个元素

    3.5最大最小

    3.6将stream转为list集合

  • 相关阅读:
    REDIS缓存穿透,缓存击穿,缓存雪崩
    spring 自动装配
    SpringBoot @Condition
    【Azure 环境】在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法
    【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
    【Azure 环境】基于Azure搭建企业级内部站点, 配置私有域名访问的详细教程 (含演示动画)
    【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
    【Azure 应用服务】Python3.7项目在引用pandas 模块后,部署报错 
    【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
    【Azure 应用服务】添加自定义域时,Domain ownership 验证无法通过 
  • 原文地址:https://www.cnblogs.com/wanghuaying/p/9446093.html
Copyright © 2011-2022 走看看