jdk1.8 Lambda表达式的使用
参考博文
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表达式的使用相关推荐
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...
- jdk1.8之lambda表达式
2019独角兽企业重金招聘Python工程师标准>>> 1.Lambda Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此 ...
- jdk1.8新特性 Lambda表达式和Stream集合操作(详细)
Lambda表达式 ① 语法 lambda表达式 ,是JDK1.8新增的特性 使用新的运算符 -> (转到.称为) lambda表达式的组成 第1部分: (参数) 第2部分: -> 第3部 ...
- 三、jdk1.8新特新Lambda表达式方法引用
前言 在之前我们接触了JDK1.8引入的新特新lambda表达式没在某种程度上,它可以简化我们的代码,帮助我们快速的编写代码,但在这其中我们之前的编写方式并不是lambda表达式最简洁的方式,而在头屑 ...
- 接口(jdk1.8及之后) 单例模式(饿汉式,懒汉式) 静态代理模式 简单工厂模式 匿名内部类 lambda表达式
接口: jdk1.8及之后新增了2种可以定义存在方法体的方法: 默认方法 (default关键字修饰的方法 ) 使用:通过实现类对象使用 静态方法 (掌握) 使用:通过接口名去调用 目前接口中: 必须 ...
- JDK1.8新特性之Lambda表达式+Stream流+函数式接口
一.Lambda表达式 Lambda表达式,是JDK1.8引入的一种语法,这种语法可以对匿名内部类的写法,进行简写. 1.快速入门 package org.westos.demo2;import ja ...
- JDK1.8新特性:lambda表达式
一.类定义 package com.xxx;import java.math.BigDecimal;public class Student {private String name;private ...
- JDK1.8新特性Lambda表达式入门
摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...
- jdk1.8新特性之Lambda表达式
Java8的两个重大改变,一个是Lambda表达式,另一个就是Stream API表达式.Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作,在新版的 ...
最新文章
- LINUX 系统 安装Jexus 5.6和mono3.4 部署.net 环境
- 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法
- 实践提炼:面对大型B端项目,产品设计该如何展开?
- Python全栈开发之Day02
- 递归(二)-------经典递归实例(汉诺塔问题)
- XmlPullParser文件解析android
- 网络型多媒体计算机教室功能是,多媒体网络教室中的信息技术教学
- 高效工作的7种方法,可以让你的工作效率提高一倍,很实用
- PIPI1091 编程课奖励(滚动数组+dp)
- 《小QQ 大帝国 马化腾传奇》熊江
- 微信开放平台和公众平台的区别?
- Spring源码分析(二)BeanFactoryPostProcessor之ConfigurationClassPostProcessor的调用过程
- MGN网络详解以及代码分析
- OpenCV VideoWriter 写入自定义尺寸视频卡死问题
- eclipse各版本说明与区别
- js将时间戳转换成正常时间
- STC15单片机驱动WS2812
- Java 打印等边三角形
- 浅谈大数据与人工智能!!
- matlab绘制y x 3 x 1,怎样画x^2+(y-x^(2/3))^2=1的图像,用matlab可以吗?代码是什么?...
热门文章
- 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
- 多个containers 共用一个pvc_庆阳PVC排水管生产线销售,真不错_崔氏机械
- python判断线程是否执行完成_判断Threading.start新线程是否执行完毕的实例
- 微信小程序 导入excel文件
- java返回图片base64_java将图片转为base64返回给前端
- 物联网毕设(智能灌溉系统 -- Android端)
- 物联网--ESP32开发笔记(2) domoticz mqtt的一些坑的记录
- java中String s=abc及String s=new String(abc)详解
- 熟女最经典的幸福语录
- JACTF misc wp