import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import org.junit.Test;

/*
 * 一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符
 *                             箭头操作符将 Lambda 表达式拆分成两部分:
 *
 * 左侧:Lambda 表达式的参数列表
 * 右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体
 *
 * 语法格式一:无参数,无返回值
 *         () -> System.out.println("Hello Lambda!");
 *
 * 语法格式二:有一个参数,并且无返回值
 *         (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编译器通过上下文推断出,数据类型,即“类型推断”
 *         (Integer x, Integer y) -> Integer.compare(x, y);
 *
 *
 * 二、Lambda 表达式需要“函数式接口”的支持
 * 函数式接口:接口中只有一个抽象方法的接口,称为函数式接口。 可以使用注解 @FunctionalInterface 修饰
 *              可以检查是否是函数式接口
 */
public class TestLambda2 {
    
    @Test
    public void test1(){
        int num = 0;//jdk 1.7 前,必须是 final
        
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World!" + num);
            }
        };
        
        r.run();
        
        System.out.println("-------------------------------");
        
        Runnable r1 = () -> System.out.println("Hello Lambda!");
        r1.run();
    }
    
    @Test
    public void test2(){
        Consumer<String> con = x -> System.out.println(x);
        con.accept("我最爱Java!");
    }
    
    @Test
    public void test3(){
        Comparator<Integer> com = (x, y) -> {
            System.out.println("函数式接口");
            return Integer.compare(x, y);
        };
    }
    
    @Test
    public void test4(){
        Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
    }
    
    @Test
    public void test5(){
//        String[] strs;
//        strs = {"aaa", "bbb", "ccc"};
        
        List<String> list = new ArrayList<>();
        
        show(new HashMap<>());
    }

public void show(Map<String, Integer> map){
        
    }
    
    //需求:对一个数进行运算
    @Test
    public void test6(){
        Integer num = operation(100, (x) -> x * x);
        System.out.println(num);
        
        System.out.println(operation(200, (y) -> y + 200));
    }
    
    public Integer operation(Integer num, MyFun mf){
        return mf.getValue(num);
    }
}

jdk8 lambda相关推荐

  1. JDK8 lambda的会话指南–术语表

    上次出现-我写了一篇与JDK8为我们提供的新方法有关的文章. 最令我兴奋的功能是lambda. 我必须承认,在即将成为浪子的第一年(在此期间,我使用C#开发了该产品),我喜欢LINQ和它可以做的漂亮, ...

  2. java8 大到小排序,屌炸天,JDK8的排序大法!!

    今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例. public class Test { public static void main( ...

  3. JDK 8 新特性 之 Lambda表达式

    前言 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性. Lambda 允许把函数作为参数传递进方法中. 使用 Lambda 表达式可以使代码变的更加简洁紧凑. lamb ...

  4. JDK8的排序大法!!

    转载自 屌炸天,JDK8的排序大法!! 今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例. public class Test {publi ...

  5. Lambda 表达式详解~简化匿名内部类

    本节将介绍如何使用Lambda表达式简化匿名内部类的书写,但Lambda表达式并不能取代所有的匿名内部类,只能用来取代函数接口(Functional Interface)的简写.先别在乎细节,看几个例 ...

  6. 四万字 Lambda 表达式完整教程(强烈建议收藏)

    点击关注公众号,利用碎片时间学习 Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法.实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JV ...

  7. 函数式编程与Lambda表达式

    函数式编程与Lambda表达式 1 函数式编程的优势 1.1 函数式编程思想 在数学中,函数就是有输入量.输出量的一套计算方案,也就是"拿什么东西做什 么事情".编程中的函数,也有 ...

  8. jdk8 新特性之 List 排序

    一.排序示例 升序–> 从小到大 降序–> 从大到小 age --> 排序字段 jdk8 -> Lambda 循环打印println -> list.forEach(Sy ...

  9. JDK8新特性相关知识讲解汇总

    以下是博主本人对jdk8相关新知识的学习以及讲解的汇总,如果对你帮助可以多多点赞和关注我哦~ (1)JDK8新特性-Lambda表达式详细介绍以及应用 (2)JDK8 关于中断线程的总结 (3)JDK ...

  10. 用通俗易懂的大白话搞明白Java里的函数式编程和Lambda表达式

    今天,用通俗易懂的大白话来彻底搞明白Java里的函数式编程和Lambda表达式 为什么引入函数式编程,lambda表达式? 大家都知道,JDK1.8引入了函数式编程,lambda表达式. 那有没有想过 ...

最新文章

  1. windows的常用快捷键(实用篇)
  2. Chrome开发者工具使用console.trace的一个小技巧
  3. java ftp 关闭连接_java - 使用Java Apache FTPClient进行FTP TLS获取“握手时远程主机关闭连接”[重复] - 堆栈内存溢出...
  4. JAVA多线程之Synchronize 关键字原理
  5. 再见,Eclipse
  6. 【Flink】Error during binlog processing last offset stored = null binglog reader near position
  7. flask(四)jinja2模板
  8. 在 ubuntu 下优雅的使用 Sublime Text 3 写 Python
  9. SSDP:DDoS***的“新宠”
  10. 手把手教你python实现量价形态选股知乎_Python实现量化选股
  11. Linux系统U盘怎么格式化,u盘怎么格式化各系统教程
  12. 我的世界服务器指令修复耐久,我的世界修改装备耐久度指令 | 手游网游页游攻略大全...
  13. 路由器和电脑IP地址、端口号、网卡mac查询方式
  14. EMC基础知识总结,写的太全了!
  15. 慕学在线--2、开发准备及布署上线
  16. Web前端开发-1-考试总结
  17. 企业从小做大的步骤-摘自《企业自动运行系统》
  18. 机器学习面试题之——简单介绍最小二乘
  19. 最佳引脚使用 – ESP8266 ESP12S
  20. Autosar之自签名证书与CA证书

热门文章

  1. 勘测定界坐标交换格式文本文件转换成 shapefile 格式
  2. javaweb mysql毕业生管理系统_javaweb高校毕业生就业管理系统, springmvc+mysql
  3. Java之将GB2312编码转化为汉字
  4. typecho插件,typechoSEO插件,typecho程序插件
  5. Python 爬虫 爬取视频
  6. 如何使用Python实现一个pdf阅读器?
  7. NOIp2016纪录[那些我所追求的]
  8. 硕士研究生的文献阅读方法以及文献阅读笔记模板
  9. Windows10新版本设置卓越性能
  10. 数据挖掘案例实战:利用LDA主题模型提取京东评论数据(四)