Lambda表达式的简单使用以及需要注意的地方!!

Lambda表达式的简单使用以及需要注意的地方!!

1格式:
( ) -> { }
(参数…)-> {方法体}
注意:
1.当参数只有一个的时候,小括号可以省略不写
2.当方法体中的代码只有一句的时候,大括号可以省略不写
3.传入的参数,参数类型可以省略不写
4.可选的返回关键字return:如果主体只有一个表达式返回值则可以省略return和{}

2使用
条件:
接口中有且只能有一个抽象方法,默认方法静态方法不受影响
格式:
修饰符 interface 接口名称 {
[public abstract] 返回值类型 方法名称(可选参数信息);
// 其他
}
函数式接口
被@FunctionalInterface 注解标注的为函数式接口
该注解可用于一个接口的定义上,一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。
注意:
即使没有@FunctionalInterface该注解满足有且只有一个抽象方法的接口都称为函数式接口

可传递的匿名函数(行为参数化)
自己的理解:Lambda表达式其实就是匿名内部类对象,表达式右边的部分会传递给方法体,所以也可以把Lambda表达式理解成”方法”

官方的定义:可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型。这个定义还是太模糊的,让我们从以下几个关键词慢慢道来。
匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而做得多!
函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型。
传递——Lambda表达式可以作为参数传递给方法或存储在变量中。
简洁——无需像匿名类那样写很多模板代码。

(1)不带参数
接口:
package com.bigdata.lambda;

@FunctionalInterface
public interface MyFunctionalInterface {
void myMethod();
}

测试类:
package com.bigdata.lambda;

/**

  • @author Administrator

  • @date 2019/2/23 19:37

  • @description
    */
    public class testDemo {
    public static void main(String[] args) {

     //test(new MyFunctionalInterface() {
     //
     //    @Override
     //    public void myMethod() {
     //        System.out.println("匿名内部类输出");
     //    }
     //});
    
     //使用Lambda表达式代替上面的匿名内部类
     test(() -> System.out.println("lambda表达式输出"));
    

    }

    public static void test(MyFunctionalInterface my) {
    my.myMethod();
    }
    }

(2)带参数
接口
package com.bigdata.lambda;
/**

  • @author Administrator
  • @date 2019/2/23 19:36
  • @description
    */
    @FunctionalInterface
    public interface testInterface {
    void test(String str);
    }

测试类:
package com.bigdata.lambda;

/**

  • @author Administrator

  • @date 2019/2/23 20:02

  • @description
    */
    public class testDemo0 {
    public static void main(String[] args){
    test(“带参lambda测试”, new testInterface() {
    @Override
    public void test(String str) {
    System.out.println(str);
    }
    });

     //lambda表达式测试
     //test("带参lambda测试" ,(string)->System.out.println("带参lambda测试"));
    

    }
    public static void test(String str,testInterface testInterface){
    testInterface.test(str);
    }
    }

使用解析(自己理解):

内置函数

Consumer
消费型接口 T void 对类型为T的对象操作,
方法:void accept(T t)
Supplier
供给型接口 无 T 返回类型为T的对象,
方法:T get();可用作工厂
Function<T, R>
函数型接口 T R 对类型为T的对象操作,并返回结果是R类型的对象
方法:R apply(T t);
Predicate
断言型接口 T boolean 判断类型为T的对象是否满足条件,返回boolean值
方法boolean test(T t);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用lambda表达式进行排序是一种简洁而强大的方式。Lambda表达式是一种匿名函数,没有函数名,可以在需要函数的地方直接使用。下面是lambda表达式排序的几种常见用途: 1. 使用lambda表达式对列表进行排序: 使用list.sort()函数结合lambda表达式可以对列表进行排序。通过在lambda表达式中指定排序的键,可以根据不同的条件对列表进行排序。 2. 使用lambda表达式对自定义属性进行排序: 可以利用lambda表达式对包含自定义属性的对象进行排序。通过在lambda表达式中指定对象的属性来进行排序。 3. 处理常见的小问题: lambda表达式可以解决一些简单的排序问题,比如对数字、字符串按照特定规则进行排序。 4. 对二维列表进行排序: 通过在lambda表达式中指定多个排序键,可以对二维列表进行排序,按照指定的优先级对多个维度进行排序。 需要注意的是,使用lambda表达式进行排序可能会遇到一些小问题,但具体问题需要根据具体情况进行分析和解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【python】lambda表达式与排序](https://blog.csdn.net/qq_45978890/article/details/115059675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值