Lambda表达式-Java

package com.sxt.thread;
/**
 * Lambda表达式 简化线程(用一次)的使用
 *
 */
public class LambdaThread {
    //静态内部类
    static class Test implements Runnable{
        public void run() {
            for(int i=0;i<20;i++) {
                System.out.println("一边听歌");
            }
        }
    }
    public static void main(String[] args) {
        //new Thread(new Test()).start();        

        //局部内部类
        class Test2 implements Runnable{
            public void run() {
                for(int i=0;i<20;i++) {
                    System.out.println("一边听歌");
                }
            }
        }
        new Thread(new Test2()).start();

        //匿名内部类 必须借助接口或者父类
        new Thread(new Runnable() {
            public void run() {
                for(int i=0;i<20;i++) {
                    System.out.println("一边听歌");
                }
            }
        }).start();

        //jdk8 简化  lambda表达式
        new Thread(()-> {
                for(int i=0;i<20;i++) {
                    System.out.println("一边听歌");
                }
            }
        ).start();

    }

}
package com.sxt.thread;
/**
 * lambda推导
 *
 *
 */
public class LambdaTest01 {
    //内部类
    static class Like2 implements ILike{
        public void lambda() {
            System.out.println("i like lambda2 ");
        }

    }
    public static void main(String[] args) {
        ILike like = new Like();
        like.lambda();

        like = new Like2();
        like.lambda();

        class Like3 implements ILike{
            public void lambda() {
                System.out.println("i like lambda3 ");
            }

        }

        like = new Like3();
        like.lambda();
        //匿名内部类
        like = new ILike() {
            public void lambda() {
                System.out.println("i like lambda4 ");
            }
        };
        like.lambda();
        //lambda
        like = ()-> {
            System.out.println("i like lambda5 ");
        };
        like.lambda();

        /*
         *lambda推导必须存在类型
        ()-> {
            System.out.println("i like lambda5 ");
        }.lambda();
        */
    }
}
interface ILike{
    void lambda();
}
//外部类
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("i like lambda ");
    }

}
package com.sxt.thread;
/**
 * lambda推导 +参数
 *
 *
 */
public class LambdaTest02 {

    public static void main(String[] args) {
        ILove love =(int a) -> {
            System.out.println("i like lambda -->"+a);
        };

        love.lambda(100);

        //简化
        love =(a) -> {
            System.out.println("i like lambda -->"+a);
        };

        love.lambda(50);

        love =a -> {
            System.out.println("i like lambda -->"+a);
        };

        love.lambda(5);

        love =a ->System.out.println("i like lambda -->"+a);
        love.lambda(0);

    }
}
interface ILove{
    void lambda(int a);
}
//外部类
class Love implements ILove{

    @Override
    public void lambda(int a) {
        System.out.println("i like lambda -->"+a);
    }

}
package com.sxt.thread;
/**
 * lambda推导 +参数+返回值
 *
 *
 */
public class LambdaTest03 {

    public static void main(String[] args) {
        IInterest interest = (int a,int c)-> {
            System.out.println("i like lambda -->"+(a+c));
            return a+c;
        };
        interest.lambda(100,200);

        interest = (a,c)-> {
            System.out.println("i like lambda -->"+(a+c));
            return a+c;
        };

        interest.lambda(200,200);

        interest = (a,c)-> {
            return a+c;
        };

        interest = (a,c)-> a+c;

        interest = (a,c)-> 100;

        System.out.println(interest.lambda(10, 20));
    }
}
interface IInterest{
    int lambda(int a,int b);
}
//外部类
class Interest implements IInterest{

    @Override
    public int lambda(int a,int c) {
        System.out.println("i like lambda -->"+(a+c));
        return a+c;
    }

}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

总的来说,就是

1.(params)->expression

2.(params)->statement

3.(params)->{多行statements}

原文地址:https://www.cnblogs.com/nihaoya-czw/p/10352502.html

时间: 2024-11-06 03:51:03

Lambda表达式-Java的相关文章

精通lambda表达式:Java多核编程pdf

下载地址:网盘下载 内容简介  · · · · · · lambda表达式权威指南 <精通lambda表达式:Java多核编程>介绍Java SE 8中与lambda相关的特性是如何帮助Java迎接下一代并行硬件架构的挑战的.本书讲解了如何编写lambda.如何在流与集合处理中使用lambda,并且提供了完整的代码示例.你将学习如何通过lambda表达式充分利用当今多核硬件所带来的性能改进. 主要内容: ● 为何需要lambda,它将如何改变Java编程 ● lambda表达式语法 ● 流与管

JDK8新特性 Lambda表达式

一.接口的默认方法二.Lambda 表达式三.函数式接口四.方法与构造函数引用五.Lambda 作用域六.访问局部变量七.访问对象字段与静态变量八.访问接口的默认方法九.Date API十.Annotation 注解:支持多重注解 一.接口的默认方法 Java8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: [java] view plain copy public interface Formula { double calcu

C++雾中风景8:Lambda表达式

上一篇C++的博客是Long Long ago了,前文讲到在看Lambda表达式的内容.笔者首次接触Lambda表达式应该是学习Python语言的时候,当时也不太明白这种表达方式的精髓,后续接触了Scala与Java8的链式调用与Lambda结合的方式,深陷无法自拔.所以借上一篇闭包的内容.我们来完整的梳理一下C++之中的Lambda表达式. 1.什么是Lambda表达式? Lambda表达式是函数式编程的重要的语法结构. Lambda 表达式(lambda expression)说起来很简单,

009-jdk1.8版本新特性一-展方法,Lambda表达式,函数式接口、方法引用构造引用

一.JDK1.8 名称:Spider(蜘蛛) 发布日期:2014-03-18 新特性: 1.1.扩展方法[接口的默认方法] Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法. 在Java中只有单继承,如果要让一个类赋予新的特性,通常是使用接口来实现,在C++中支持多继承,允许一个子类同时具有多个父类的接口与功能,在其他语言中,让一个类同时具有其他的可复用代码的方法叫做mixin.新的Java 8 的这个特新在编译器实现的角度上来说更

Java8中Lambda表达式详解

对于任何场景而言,代码量永远都是越少越好,而Java8中提供的Lambda表达式正式简化代码的利器. 参考博客:Java 8 Lambda 表达式详解 参考博客:完美的lambda表达式只有一行 在 Java 8 以前,若我们想要把某些功能传递给某些方法,总要去写匿名类. manager.addScheduleListener(new ScheduleListener() { @Override public void onSchedule(ScheduleEvent e) { // Event

Java 8 中函数接口,陈货翻新了炒,只是为了Lambda表达式

Java开发人员应该对java.lang.Runnable,java.util.Comparator,java.util.concurrent.Callable 等等接口不会感到陌生.他们都只有一个单一的抽象方法.这样的接口,我们通常叫单一抽象方法接口(SAM,Single Abstract Method Interface). 以前大家应该经常使用下面的代码片段 public class InnerAnonymousClassSample { public static void main(S

Java Lambda表达式入门[转]

原文链接: Start Using Java Lambda Expressions http://blog.csdn.net/renfufei/article/details/24600507 下载示例程序 Examples.zip .原文日期: 2014年4月16日 翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要

Java Lambda 表达式的奇幻之旅

JDK 8 对 Lambda 函数编程的支持,浅的来说无非是引入了一些新的语法结构,是继JDK5 引入的Generics后又一项对大家编码方式的一种革新,如果你不跟上的话,恐怕过段时间,你会认为Java代码成了火星语.深的来说,Java是在语言级进一步支持多核CPU的环境下的并行处理,这在Stream API 中可见一斑,在Java之前,已经有很多主流语言,像 C#和C++,支持Lambda 函数编程,此次Java引入Lambda支持也算后知后觉了. 想在Java中书写Lambda的代码,有两个

Java 8 lambda表达式示例

例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码.我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类. 1 // Java 8之前: 2 new Thread(new Runnable() { 3 @Override 4 public void run() {