Lambda表达式

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;

/**
 * 一、Lambda 表达式基础语法:Java8中引入一个新的操作符"->"该操作符称为箭头操作符或Lambda操作符
 *  箭头操作符将Lambda表达式拆分为两部分:
 *   左侧: Lambda表达式的参数列表
 *   右侧: Lambda表达式中所需要执行的功能,即Lambda体
 *
 *   语法格式一:无参数,无返回值
 *      () -> System.out.println("Hello Lambada!")
 *   语法格式二:有一个参数,无返回值
 *      (x) -> System.out.println(x)
 *   语法格式三:若只有一个参数,参数的小括号可以不写
 *      x -> System.out.println(x);
 *   语法格式四:有两个以上的参数,并且Lambda体中有多条语句
 *      Comparator<Integer> com = (x,y) ->{
 *          System.out.println("函数式接口");
 *          return Integer.compare(x,y);
 *       };
 *    语法格式五:若Lambda体中只有一条语句,return和大括号都可以不写
 *          Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
 *    语法格式六:Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器可以通过上下文
 *      推断出,数据类型。即"类型推断"
 */
public class TestLambda2 {

    @Test
    public void test1(){
        int num = 0;//jdk1.7前,必须是final
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello world!" + num);//匿名内部类中num++是错的
            }
        };

        r.run();
        System.out.println("------------------------------");
        Runnable r1 = () -> System.out.println("Hello Lambda" + num);
        r1.run();
    }

    @Test
    public void test2(){
        Consumer<String> con = x -> System.out.println(x);
        con.accept("我的瓶子");
    }

    @Test
    public void test3(){
        Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
    }

}
时间: 2024-10-13 00:58:33

Lambda表达式的相关文章

lambda表达式 &lt;二&gt;

概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿名方法是C#2.0引入的一个新特性,它允许开发者声明自己的函数代码而无须使用委托函数. C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称,匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部.也不能在匿名方法外部使用的ref和out参数.

java8新特性-Lambda表达式(二)

Java8新增了java.util.funcion包,里面包含常用的函数接口,这是Lambda表达式的基础,Java集合框架也新增部分接口,以便与Lambda表达式对接. Collections中的常用函数接口 Java集合框架的接口继承结构: 上图中蓝色标记和橙色标记的接口类,表示在Java8中加入了新的接口方法,由于继承关系,他们相应的子类也会继承这些方法. 下面用一张表列举这些方法 接口名 Java8新加入的方法 Collection removeIf() spliterator() st

JDK1.8新特性(二): Lambda表达式 (参数列表) -&gt; { } 和函数式接口@FunctionalInterface

Lambda表达式 二:简介 JDK的升级的目的有以下几个:增加新的功能.修复bug.性能优化.简化代码等几个方面,Lambda表达式就是属于简化代码,用于简化匿名实现类,提供一种更加简洁的写法.Lambda表达式在Swift语言中称之为代码块,Lambda表达式可以认为是一种特殊的接口,该接口必须只有一个抽象方法. 语法 (参数类型 参数名, 数参数类型 参数名2...) -> { // code }; 小括号()中的内容就是方法中的参数列表包括参数类型.参数名,其中参数类型是可以省略的,当参

001 lambda表达式的引入

一 . 概述 在java8之中,为我们引入了lambda表达式的概念,我们通过这个概念可以实现函数式编程的理念. 本次,我们从最初的概念之中推到出lambda表达式. 二 .匿名内部类的演化 new Thread(new Runnable() { @Override public void run() { for (;;) System.out.println("running...."); } }).start(); 上面的代码表现的就是我们以前使用匿名内部类的方式,我们可以自己的观

Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> /// 测试值为枚举 /// </summary> [TestMethod] public void TestGetValue_Enum() { var test1 = new Test1(); test1.NullableEnumValue = LogType.Error; //属性为枚举,值

十二、C# 委托与Lambda表达式(匿名方法的另一种写法)

委托与Lambda表达式 1.委托概述 2.匿名方法 3.语句Lambda 4.表达式Lambda 5.表达式树 一.委托概述 相当于C++当中的方法指针,在C#中使用delegate 委托来提供相同的功能, 它将方法作为对象封装起来,允许在"运行时"间接地绑定一个方法调用. 声明的委托相当于一种自定义的数据类型. 1.背景 冒泡排序 1 static class SimpleSort1 2 { 3 public static void BubbleSort(int[] items)

CRL快速开发框架系列教程二(基于Lambda表达式查询)

本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(

Lambda表达式学习篇二(流-上)

一.从外部迭代到内部迭代 使用for循环计算伦敦的艺术家人数: int count=0; for(Artist artist:allArtists){ if(artist.isFrom("London")){ count++; } } 每次迭代集合类时,都需要写较多样本代码. 调用iterator,产生一个新的Iterator对象,进而控制整个迭代过程,这就是外部迭代. int count=0; Iterator<Artist> iterator=allArtists.it

死磕Lambda表达式(二):Lambda的使用

城市就是森林,每一个男人都是猎手,每一个女人都是陷阱.--<三体> 在哪使用Lambda表达式? 在上一篇文章(传送门)中介绍了Lambda表达式的基本语法,其中的举了一个Lambda表达式的例子,就是按照品牌给口罩列表进行排序: maskList.sort((Mask o1, Mask o2) -> o1.getBrand().compareTo(o2.getBrand())); 这里使用的sort方法的参数类型是Comparator<T>,我们就是把Lambda表达式作为

python基础入门之十二 —— lambda表达式

一.语法 作用:简化函数代码 格式:lambda 参数列表 :表达式 P.s: lambda表达式参数可有可无,参数写法同函数 lambda函数能接收任何数量的参数但只能返回一个表达式的值 def func0(): return 100 func = lambda: 100 # lambda本质是一个匿名函数 print(func0) # <function func0 at 0x000001F7FE355160> print(func) # <function <lambda&g