首页 > 其他分享 >What is Lambda?

What is Lambda?

时间:2023-09-28 16:26:25浏览次数:34  
标签:What int void 参数 println public Lambda

根据我的观察,Lambda是一种比较灵活的形式,需要多看几个案例才能明白它。
Lambda是一种简化代码的技术手段,主要用于简化匿名实现类,允许把函数作为一个方法的参数传递进方法中。它本身并不会创造出新的概念和功能来。不过现在很多开源项目都使用到这种技术,我的原则是能看懂别人代码即可。

Lamdba 优点:
如果你的代码中有地方需要接口回调套接口回调,有可能套了好几层,虽然这种情况出现的概率比较低,但是一旦出现这种代码,lambda表达式的这个简洁,就很适合这种场景。

Lamdba 缺点:
缺点也是它的简洁,由于省略了太多东西,代码可读性有可能在一定程度上会降低,这个完全取决于你使用lambda表达式的位置所设计的API是否被你的代码的其他阅读者所熟悉。

使用语法:

(参数类型 参数名, 数参数类型 参数名2...) -> { 
// code
};

没有参数的案例

传统写法:

public static void general() {
    // 用匿名内部类的方式来创建线程
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello World.");
        }
    }).run();
}

Lambda 写法:

public static void lambda() {
    // 使用Lambda来创建线程
    new Thread(() -> System.out.println("Hello Lambda!")).run();
}

有参数,有返回值的案例

1个参数,一个返回值

public static void oneParam() {
    // Consumer<String> con = (s) -> System.out.println(s);

    // 参数的小括号可以省略。
    Consumer<String> con = s -> System.out.println(s);
    con.accept("oneParam Test!");
}

2个参数,一个返回值

interface Calculator {
    int calculate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        Calculator calculator = (a, b) -> a + b;
        
        int result = calculator.calculate(5, 3);
        System.out.println(result);
    }
}

语法说明:

  • (a,b) 参数类型是可以省略的,编译器会根据上下文推断出参数类型。当然,这种省略并不是必须的,你也可以显式地指定参数类型;
  • a + b ,在Lambda表达式的主体中,如果主体只有一条表达式,那么这条表达式的结果将被隐式地作为Lambda表达式的返回值,并且这个大括号都是可以省略的。当然,你也可以使用了显式的return语句来返回结果。

和上面一样的代码,但是使用显示:

interface Calculator {
    int calculate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        Calculator calculator = (int a, int b) -> {
            return a - b;
        };
        
        int result = calculator.calculate(5, 3);
        System.out.println(result);
    }
}

函数式接口@FunctionalInterface

TODO

标签:What,int,void,参数,println,public,Lambda
From: https://www.cnblogs.com/mysticbinary/p/17633833.html

相关文章

  • What is Serializable ?
    在Java中,Serializable是一个标记接口(markerinterface),用于指示一个类的对象可以被序列化。序列化是将对象转换为字节流的过程,可以将对象保存到文件、在网络上传输或在内存中传递。当一个类实现了Serializable接口时,它表示该类的对象可以被序列化和反序列化。序列化过程通过将对......
  • Lambda expression
    lambdastructure[capturelist](parameterlist)->returntype{functionbody}(parameterlist)andreturntypeareoptionalValueandReferencecaptureThereisanotablequestion:whenlambdausedbetweenCPUandGPU,weneedtonoticethestor......
  • lambda表达式递归报错
    lambda表达式递归报错报错代码:voidsolve(){intn=10;vector<int>adj[n+1];autodfs=[&](autoself,intu,intp)->void{for(autov:adj[u]){}};}在递归lambda表达式中引用的外部变量尽量不要出现形如......
  • Microservice - What are microservices, and why are microservices?
    Theconceptof microservicesissimplybreakingasinglelargepotentialserviceintomanysmaller servicesthatworktogether,hence,thename.Oneveryobviousadvantagewhenitcomestobuildinganapplicationwitha microservicearchitecturewouldbe......
  • lambdas
    lambdas形式是:[](参数列表){操作}【】里面是捕捉方式,即传参的方式可以结合lambdas来增加筛选条件vector<int>v{3,9,7,3,1};autoit=std::find_if(v.begin(),v.end(),[](intvalue){returnvalue>4;});std::cout<<*it<<std::endl;//9; ......
  • lambda HashMap 排序
    目录TreeMaplambdacomparingByKey示例代码TreeMap按key排序生成map可以有TreeMap完成,TreeMap可以按key的自然顺序排序(Comparable实现)lambdacomparingByKey使用lambda也可以很方便的对map排序Map.Entry.comparingByKey()按key排序的ComparatorMap.Entry.comparingBy......
  • Java 8 Lambda 表达式解析
    Lambda表达式,也可称为闭包,它是推动Java8发布的最重要新特性。使用Lambda表达式可以使代码变的更加简洁紧凑。坦白的说,初次看见Lambda表达式瞬间头就大了,为了更好的理解,我们可以把Lambda表达式当作是一种匿名函数(对Java而言这并不完全正确,但现在姑且这么认为),简单地说,就是......
  • JDK8新特性之Lambda表达式和四大函数接口
    在Java8中,加入了Lambda(Lambdaexpression),在使用它以前我们先聊聊为什么要加入Lamdba,使用它对于编程上有什么好处 一、Lamdba的作用1.在我们需要把一些功能传递给某些方法时,在Java8以前,我们就需要去写匿名内部类。引入lambda表达式后,你可以在一个类中简便的定义参数和方法,替代大......
  • Python实现排序的方式有:内置函数sort()和sorted()以及lambda函数
    排序是计算机编程中经常需要用到的操作,它将一组数据按照规则重新排列,以便更好地处理数据。在Python中,有多种方法可以对数组进行排序,本文将从多个方面进行介绍。一、Python中的排序方法Python中内置了多个排序算法,包括冒泡排序、插入排序、选择排序、快速排序等。使用内置的sort(......
  • What is service discovery?
    Servicediscoveryhelpsyoudiscovery,trackandmonitorthehealthofserviceswithinanetwork.Servicediscoveryregistersandmaintainsarecordofallyourservicesinaservicecatalog.Thisservicecatalogactsasasinglesourceoftruththatallows......