本文转载原文http://www.cnblogs.com/jalja/p/7655170.html

一、使用线程

public static void main(String[] args) {//=============================原始版==========================new Thread(new Runnable() {@Overridepublic void run() {System.out.println("简单的线程编程JDK1.8以前");}}).start();//=====================Lambda可读性强一些================================new Thread(()->{System.out.println("Lambda可读性强一些");}).start();//=====================Lambda简洁一些================================new Thread(()->System.out.println("Lambda简洁一些")).start();}

Runnable接口源码:

@FunctionalInterface
public interface Runnable {public abstract void run();
}

该接口只有一个抽象方法,且该抽象没有参数 所以Lambda 表达式为 ();   System.out.println("简单的线程编程JDK1.8") 是实现该接口覆盖run方法的具体实现逻辑。所以最终Runnable接口的最终实现代码用Lambda表达式实现为:() -> System.out.println("简单的线程编程JDK1.8")。

二、使用  Collections.sort 排序

public static void testComparatorLambda(){List<Integer> names = Arrays.asList(1, 10, 3, 2,1);//=========================创建一个匿名的比较器对象=====================Collections.sort(names, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {System.out.println("o1:"+o1+"<>o2:"+o2+"=="+o1.compareTo(o2));return o1.compareTo(o2);}});//==========================使用Lambda=================================Collections.sort(names,(Integer o1,Integer o2)->{System.out.println("o1:"+o1+"<>o2:"+o2+"=="+o1.compareTo(o2));return o1.compareTo(o2);} );System.err.println(names);}

@FunctionalInterface
public interface Comparator<T> {int compare(T o1, T o2);
}

Compoarator接口的compare方法有两个参数 所以Lambda 表达式为 (Integer o1,Integer o2);   {System.out.println("o1:"+o1+"<>o2:"+o2+"=="+o1.compareTo(o2));return o1.compareTo(o2);} 是实现该接口覆盖compare方法的具体实现逻辑。所以最终Compoarator接口的最终实现代码用Lambda表达式实现为:(Integer o1,Integer o2)->{ System.out.println("o1:"+o1+"<>o2:"+o2+"=="+o1.compareTo(o2)); return o1.compareTo(o2);}

三、自己模拟业务使用Lambda表达式实现

业务:从一堆苹果中选出红色的苹果。

建立一个苹果类

class Apple{private String color;private Integer weight;构造函数get,set
}

一个策略接口

interface AppleFilter{boolean validate(Apple apple);
}

业务实现:

public class LambdaAgo {public static void main(String[] args) {List<Apple> apples=Arrays.asList(new Apple("red",120),new Apple("green",189),new Apple("red",110));//===方法一 使用内部类======getAppleFilter(apples,new AppleFilter() {@Overridepublic boolean validate(Apple apple) {return apple.getColor().equals("red");}});//===方法二 使用 Lambda======getAppleFilter(apples,(Apple apple)-> apple.getColor().equals("red"));}public static List<Apple> getAppleFilter(List<Apple> apples,AppleFilter filter){List<Apple> apples2=new ArrayList<Apple>();for(Apple a:apples){if(filter.validate(a)){apples2.add(a);}}System.out.println("getAppleFilter:"+apples2);return apples2;}
}

转载于:https://www.cnblogs.com/Joy-Hu/p/7662276.html

[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. dockerq启动报错(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --t
  2. 【HDU - 6567】Cotree(树形dp,思维)
  3. ug冲模标准件库_昆山兴模lt;携手gt;武汉益模,打通冲模“智能设计+精益管理”的最后一道关卡...
  4. 费诺编码c语言实验报告,formal parameter 4 different from declaration
  5. 印象笔记添加txt附件
  6. Linux之cp命令
  7. Arcgis自带世界矢量图
  8. httpUtils 工具类
  9. android gsm功能,Android手机-GSM网络与WCDMA网络选择的设置
  10. SpringBoot @Mapper注解实现类型转换bean无法注入
  11. 整合SSM中jsp页面图片加载不出来问题
  12. 英语口语练习十三之It's up to... (由……来决定)用法
  13. 百度编辑支持word内容和截图的复制黏贴
  14. cluster by、group by操作
  15. 小型土路肩摊铺机施工步骤与工作原理的特点
  16. 物联网组网技术比较 NB-IoT、LoRa、ZigBee、WiFi、蓝牙等
  17. 数据结构(12)----图(遍历、最小生成树、easyX可视化)
  18. 工作八年然是个二流的程序员
  19. Java 方法引用之super引用父类方法案例
  20. “expression cannot be used as a function”报错

热门文章

  1. 工业标准的品质也已成为开源世界中的范例之一
  2. IT技术中的言情小说
  3. 什么是CTS、CLS和CLR
  4. SaaS基础架构—云计算
  5. Tensorflow:常见错误
  6. Comprehensive learning path – Data Science in Python深度学习路径-用python进行数据学习
  7. Android应用真机调试
  8. mmap函数_Linux中的mmap映射 [二]
  9. ubuntu下搭建tftp服务器并且验证功能
  10. xshell的一些常用配置