参考博文
https://www.cnblogs.com/franson-2016/p/5593080.html

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements; }

下面是Java lambda表达式的简单例子

// 1. 不需要参数,返回值为 5
() -> 5  // 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x  // 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y  // 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y  // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)

详细示例1

package pojo;import java.util.Arrays;
import java.util.List;public class Test_1 {public static void main(String[] args) {String[] atp = {"Rafael Nadal", "Novak Djokovic","Stanislas Wawrinka","David Ferrer", "Roger Federer","Andy Murray", "Tomas Berdych","Juan Martin Del Potro"};List<String> players = Arrays.asList(atp);// 以前的循环方式for (String player : players) {System.out.println(player + "; ");}//使用 lambda 表达式以及函数操作(functional operation)players.forEach((a) ->{System.out.println(a + "; ");});}
}

详细示例2

package pojo;public class Test_2 {public static void main(String[] args) {// 1.1使用匿名内部类new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Hello world !");}}).start();//1.2使用 lambda expressionnew Thread(() -> System.out.println("Hello world !")).start();}
}

详细示例3

package pojo;import java.util.Arrays;
import java.util.Comparator;public class Test_3 {public static void main(String[] args) {String[] players = {"a", "c","e", "f","z", "w","b", "W","S", "E"};// 1.1 使用匿名内部类根据 name 排序 playersArrays.sort(players, new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {return (s1.compareTo(s2));}});//使用 lambda expression 方式1Arrays.sort(players, (String s1, String s2) -> s1.compareTo(s2));//使用 lambda expression 方式2Comparator<String> paixu = (String s1, String s2) -> s1.compareTo(s2);Arrays.sort(players, paixu);System.out.println(Arrays.asList(players));}
}

详细示例4

package pojo;import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Predicate;class Person {private String firstName, lastName, job, gender;private int salary, age;public Person(String firstName, String lastName, String job,String gender, int age, int salary) {this.firstName = firstName;this.lastName = lastName;this.gender = gender;this.age = age;this.job = job;this.salary = salary;}public Person() {}
}public class Test_4 {public static void main(String[] args) {ArrayList<Person> javaProgrammers = new ArrayList<Person>() {{add(new Person("Elsdon", "Jaycob", "Java programmer", "male", 43, 2000));add(new Person("Tamsen", "Brittany", "Java programmer", "female", 23, 1500));add(new Person("Floyd", "Donny", "Java programmer", "male", 33, 1800));add(new Person("Sindy", "Jonie", "Java programmer", "female", 32, 1600));add(new Person("Vere", "Hervey", "Java programmer", "male", 22, 1200));add(new Person("Maude", "Jaimie", "Java programmer", "female", 27, 1900));add(new Person("Shawn", "Randall", "Java programmer", "male", 30, 2300));add(new Person("Jayden", "Corrina", "Java programmer", "female", 35, 1700));add(new Person("Palmer", "Dene", "Java programmer", "male", 33, 2000));add(new Person("Addison", "Pam", "Java programmer", "female", 34, 1300));}};ArrayList<Person> phpProgrammers = new ArrayList<Person>() {{add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34, 1550));add(new Person("Clarette", "Cicely", "PHP programmer", "female", 23, 1200));add(new Person("Victor", "Channing", "PHP programmer", "male", 32, 1600));add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21, 1000));add(new Person("Osborne", "Shad", "PHP programmer", "male", 32, 1100));add(new Person("Rosalind", "Layla", "PHP programmer", "female", 25, 1300));add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36, 1100));add(new Person("Quinn", "Tamara", "PHP programmer", "female", 21, 1000));add(new Person("Alvin", "Lance", "PHP programmer", "male", 38, 1600));add(new Person("Evonne", "Shari", "PHP programmer", "female", 40, 1800));}};//显示姓名javaProgrammers.forEach((aa) -> {System.out.printf("%s %s; ", aa.getFirstName(), aa.getLastName());});//加薪 5%javaProgrammers.forEach((aa) -> {aa.setSalary(aa.getSalary() / 100 * 5 + aa.getSalary());});//显示姓名 薪水javaProgrammers.forEach((aa) -> {System.out.println(aa.getFirstName() + "  " + aa.getSalary());});//过滤phpProgrammers.stream().filter(new Predicate<Person>() {@Overridepublic boolean test(Person person) {return person.getSalary() > 1400;}}).forEach(new Consumer<Person>() {@Overridepublic void accept(Person person) {System.out.println(person);}});System.out.println();//实现同上的效果phpProgrammers.stream().filter((aa) -> (aa.getSalary() > 1400)).forEach((bb) -> System.out.println(bb));//多个过滤器Predicate<Person> filter_1 = (a) -> (a.getSalary() > 1400);Predicate<Person> filter_2 = (a) -> {return "female".equals(a.getGender());};Predicate<Person> filter_3 = (a) -> {return a.getAge() > 25;};phpProgrammers.stream().filter(filter_1).filter(filter_2).filter(filter_3).forEach((p) -> {System.out.println(p);});}
}

jdk1.8 Lambda表达式的使用相关推荐

  1. Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface

    Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...

  2. jdk1.8之lambda表达式

    2019独角兽企业重金招聘Python工程师标准>>> 1.Lambda Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此 ...

  3. jdk1.8新特性 Lambda表达式和Stream集合操作(详细)

    Lambda表达式 ① 语法 lambda表达式 ,是JDK1.8新增的特性 使用新的运算符 -> (转到.称为) lambda表达式的组成 第1部分: (参数) 第2部分: -> 第3部 ...

  4. 三、jdk1.8新特新Lambda表达式方法引用

    前言 在之前我们接触了JDK1.8引入的新特新lambda表达式没在某种程度上,它可以简化我们的代码,帮助我们快速的编写代码,但在这其中我们之前的编写方式并不是lambda表达式最简洁的方式,而在头屑 ...

  5. 接口(jdk1.8及之后) 单例模式(饿汉式,懒汉式) 静态代理模式 简单工厂模式 匿名内部类 lambda表达式

    接口: jdk1.8及之后新增了2种可以定义存在方法体的方法: 默认方法 (default关键字修饰的方法 ) 使用:通过实现类对象使用 静态方法 (掌握) 使用:通过接口名去调用 目前接口中: 必须 ...

  6. JDK1.8新特性之Lambda表达式+Stream流+函数式接口

    一.Lambda表达式 Lambda表达式,是JDK1.8引入的一种语法,这种语法可以对匿名内部类的写法,进行简写. 1.快速入门 package org.westos.demo2;import ja ...

  7. JDK1.8新特性:lambda表达式

    一.类定义 package com.xxx;import java.math.BigDecimal;public class Student {private String name;private ...

  8. JDK1.8新特性Lambda表达式入门

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  9. jdk1.8新特性之Lambda表达式

    Java8的两个重大改变,一个是Lambda表达式,另一个就是Stream API表达式.Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作,在新版的 ...

最新文章

  1. LINUX 系统 安装Jexus 5.6和mono3.4 部署.net 环境
  2. 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法
  3. 实践提炼:面对大型B端项目,产品设计该如何展开?
  4. Python全栈开发之Day02
  5. 递归(二)-------经典递归实例(汉诺塔问题)
  6. XmlPullParser文件解析android
  7. 网络型多媒体计算机教室功能是,多媒体网络教室中的信息技术教学
  8. 高效工作的7种方法,可以让你的工作效率提高一倍,很实用
  9. PIPI1091 编程课奖励(滚动数组+dp)
  10. 《小QQ 大帝国 马化腾传奇》熊江
  11. 微信开放平台和公众平台的区别?
  12. Spring源码分析(二)BeanFactoryPostProcessor之ConfigurationClassPostProcessor的调用过程
  13. MGN网络详解以及代码分析
  14. OpenCV VideoWriter 写入自定义尺寸视频卡死问题
  15. eclipse各版本说明与区别
  16. js将时间戳转换成正常时间
  17. STC15单片机驱动WS2812
  18. Java 打印等边三角形
  19. 浅谈大数据与人工智能!!
  20. matlab绘制y x 3 x 1,怎样画x^2+(y-x^(2/3))^2=1的图像,用matlab可以吗?代码是什么?...

热门文章

  1. 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
  2. 多个containers 共用一个pvc_庆阳PVC排水管生产线销售,真不错_崔氏机械
  3. python判断线程是否执行完成_判断Threading.start新线程是否执行完毕的实例
  4. 微信小程序 导入excel文件
  5. java返回图片base64_java将图片转为base64返回给前端
  6. 物联网毕设(智能灌溉系统 -- Android端)
  7. 物联网--ESP32开发笔记(2) domoticz mqtt的一些坑的记录
  8. java中String s=abc及String s=new String(abc)详解
  9. 熟女最经典的幸福语录
  10. JACTF misc wp