java8 -- Lambda 表达式

使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean> 需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合,利用笛卡尔乘积的方式得到组合后的结果,并需要将得到的笛卡尔结果转换为Java中自定义的bean对象。 例如: tagsIds=[1,2,3]; attributesIds=[4,5] 笛卡尔积结果为:[[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]] 最终转为Javabean对. 阅读详情

1.java8以后出现了 函数式编程

在java中体现为 一个接口对应一个抽象方法;

使用注解@FunctionalInterface 声明为 函数式抽象方法

lambda表达式是一种新的语言功能,允许把函数作为参数传入方法内(好多高级语言都支持),lambda表达式可以简化开发代码

 一 声明函数接口

package com.xiaodu.java8Test.lambda.function;

public class TestJava8Function {
	
	/**
	 *  声明两个int参数的函数
	 */
	@FunctionalInterface
	interface Function01{
		int function01(int a, int b);
	}
	/**
	 *  声明多个int参数的函数
	 */
	@FunctionalInterface
	interface Function02{
		int function02(int... a);
		
	}
	/**
	 *  声明一个string参数的函数
	 */
	@FunctionalInterface
	interface Function03{
		String function03(String mess);
	}
	
	
}

二 调用测试

     1. function01

package com.xiaodu.java8Test.lambda.function;

import org.junit.Test;

import com.xiaodu.java8Test.lambda.function.TestJava8Function.Function01;

public class TestFunction01 {
	
	/**
	 * 测试function01 函数接口
	 */
	@Test
	public void TFunction01() {
		
		/**
		 * 求和
		 * 参数带类型的
		 */
		Function01 f01 = (int a, int b ) -> a+b;
		
		System.out.println(f01.function01(12, 12));//24
		
		/**
		 * 求差
		 * 不带参数类型的,java8之后可以进行类型推断
		 */
		f01 = (a,b) -> a-b;
		System.out.println(f01.function01(3, 1));//2
		
		/**
		 * 求乘积
		 * 带返回值的
		 */
		f01 = (a,b) -> {
			return a*b;
		};
		System.out.println(f01.function01(2, 3));//6
	}

}

2 测试function02


	/**
	 * 测试function02
	 */
	@Test
	public void TestFuncion02() {
		/**
		 * 求和
		 */
		Function02 f02 = (int[] a) -> {
			int sum = 0;
				for (int i : a) {
					sum += i;
				}
			return sum;
			};
		
		System.out.println(f02.function02(new int[]{1,2,3}));
		
		/**
		 * 求偶数和 
		 */
		 f02 = (int[] a) ->{
			 int sum = 0;
			 for(int i=0;i<a.length;i++){
				 if(a[i]%2 ==0){
					 sum +=a[i];
				 }
			 };
			 return sum;
	};
		System.out.println(TestFunction01.getNumber(new int[]{2,4,5},f02));
	
	}
	
	public static Integer getNumber(int[] a,Function02 f02){
		if(a !=null) {
			return f02.function02(a);
		}
		return 0;
	}
	

测试function03

@Test
	public void TestFunction03() {
		
		/**
		 * 单个参数可以不带()
		 */
		Function03 f03 = mess -> {return mess + " Lambda";};
		System.out.println(f03.function03("xiaodu"));
		
		/**
		 * 截取字符串
		 * 
		 */
		f03 = mess ->{
			mess = mess.substring(0,mess.length()/2);
			return mess;
		};
		
		System.out.println(f03.function03("123 abc"));

 

使用Lambda 简化匿名内部类  

	/**
	 * 使用Lambda 简化 匿名内部类
	 */
	@Test
	public void TestThread() {
	
//		开启一个线程  使用匿名内部类
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				for(int i=0;i<5;i++){
					System.out.println("new Runnable ... " + i);
				}
				
			}
		}).start();
//		使用Lambda 开启线程
		new Thread(() -> {
			for(int i=0;i<5;i++) {
				System.out.println("Lambda start ..." + i);
			}
		}).start();
//		拆分Lambda启动线程
//		 1. 创建Runnable 的lambda表达式
		 Runnable r = () -> {
			 for(int i=0;i<5;i++) {
					System.out.println("Runnable start ..." + i);
				}
		 };
		 new Thread(r).start();
		
	}

查看java8之后的runnable 

测试排序

/**
	 * 使用Lambda 进行排序
	 */
	
	@Test
	public void comparator() {
		List<Integer> asList = Arrays.asList(10,4,5,7,8,9);
//		 使用Collections 工具类 排序
		 Collections.sort(asList);  
		 System.out.println(asList);
		 // 自定义倒序
		 Collections.sort(asList, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				if(o1 > o2)
				 return -1;
				return 1;
			}
		});
		 System.out.println(asList);
		 
//		 使用Lambda  排序
		 Collections.sort(asList,(a,b) -> {
			 if(a>b) return 1;
			 return -1;
		 }
		);
		 System.out.println(asList);
		 
	}

 

【Java 8】Lambda表达式介绍 Java 8 的 Lambda 表达式极大地简化了代码,使得函数式编程在 Java 中变得更加容易。通过 Lambda 表达式,你可以编写更简洁、更易读的代码,尤其是在处理集合、多线程和事件驱动编程时。 阅读详情

相关推荐

java8--Lambda表达式

目录一、Java 8 Lambda表达式1、出现的背景2、Lambda表达式简介 一、Java 8 Lambda表达式 1、出现的背景 2、Lambda表达式简介

qq_48019875的博客 1026

【Java 基础语法】详解 Java 的 Lambda 表达式

文章目录1. 介绍2. Lambda 表达式的语法3. 函数接口4. Lamdba 表达式的使用5. 变量捕获5.1 介绍5.2 匿名内部类的变量捕获5.3 Lambda 的变量捕获6. Lambda 在集合中的使用6.1 Collection 接口6.2 List 接口6.3 Map 接口7. Lambda 表达式的优点和缺点 1. 介绍 Lambda 表达式是 JavaSE8 中的一个重要的新特性 Lambda 表达式允许你通过表达式来代替功能接口 Lambda 表达式和方法一样,它提供了一个正常的参

吞吞吐吐大魔王的博客 2501

详解Java8特性之Lambda表达式

前言Lambda表达式是Java8的一个特性,而Java8是2014发布的,那时候我刚上大学,还没认识Java呢。过了很长一段时间才学习了Lambda表达式,但是一直没怎么用过,已经忘了差不多了,所以现在特地复习一下。学一个东西我们得知道它是什么,有什么用,怎么用。是什么从不同角度上来说,Lambda表达式是一个语法糖,也可以说是匿名函数。语法糖何谓语法糖,我的理解是语法糖就是方便程序员开发的一个功

腹黑大壁花 3583

Java8——Lambda 表达式

通过上面的例子可以看出Lambda语法只保留实际用到的代码,把无用代码全部省略。那它对接口有没有要求呢?我们发现这些匿名内部类只重写了接口的一个方法,当然也只有一个方法须要重写。这就是我们上文提到的函数式接口,也就是说只要方法的参数是函数式接口都可以用 Lambda 表达式。

持之以恒! 1713

qcom bypass node介绍

介绍qcom bypass node,以及如何让其生效

haodada1226的博客 2041

【SpringBoot香樟转转】debugDay01

在学黑马程序员的苍穹外卖项目,刚开始学,想用maven编译一下代码,结果报错,找不到符号。本着先理解原则,看着能找到这个变量呀。

m0_72696598的博客 1737

【Java 8】Lambda表达式

本文参考书籍《Java 8实战》,陆明刚、劳佳 译,如有侵权,请联系删除! 我们了解了利用行为参数化来传递代码有助于应对不断变化的需求,它允许我们定义一个代码块来表示一个行为,然后传递它。但我们也看到,使用匿名类来表示不同的行为并不令人满意:代码十分啰嗦。在本章中,我们会学习Java 8中解决这个问题的新工具——Lambda表达式。它可以很简洁地表示一个行为或传递代码。现在我们可以把Lamb...

wuychn 2万+

MST-GAT: Enhancing Anomaly Detection in Multimodal Time Series with Intra- and Inter-Modal Attention

本文深入解析了MST-GAT模型,这是一种通过模态内与模态间注意力机制增强多模态时间序列异常检测的新方法。它通过构建图结构显式建模传感器间的复杂时空依赖,并结合时间卷积网络与联合优化策略,有效降低了传统方法中常见的误报与漏报问题,在工业监控等场景中展现出卓越性能。

weixin_29079671的博客 150

Java 8——Lambda 表达式

Lambda 表达式是一个匿名函数,我们可以把 lambda 表达式理解为一段可以传递的代码,使用它可以写出更简洁, 更灵活的代码。作为一种更紧凑的代码风格,使 java 语言的表达式能力得到的提升。

m0_70830675的博客 1125

QGis二次开发 —— 5.1、基于qgis开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

基于qgis开发雷达扫描、无人机飞行跟踪等

322

【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介

寄存器模型简介~

悟已往之不谏 知来者之可追 2070

java 8 —— Lambda表达式

java8,语法糖 ,lambda表达式

2301_78341216的博客 1172

深入浅出讲解外部服务提供者 OAuth 2.0 帐户客户端创建与 ABAP 系统集成

本文详细介绍了在SAP ABAP平台配置OAuth 2.0客户端以安全调用外部Web服务的完整流程。主要内容包括:首先需要在外部服务提供者平台注册OAuth客户端,获取client ID和client secret;其次需特别注意重定向URI必须是公开可访问的地址;然后在ABAP系统中通过事务码OA2C_CONFIG配置OAuth客户端信息;最后阐述了常见的错误排查方法。文章强调了OAuth 2.0作为SAP系统与外部服务安全集成的标准协议,正确配置客户端是确保后续API调用安全可靠的关键前提。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1732

JAVA中JAVA8的Lambda表达式

JDK8新增的一种语法形式,叫做Lambda表达式。作用:用于简化匿名内部类代码的书写。使用前提:必须基于一个接口(不能是抽象类)。该接口中只能有一个抽象方法,这样的接口被称为 函数式接口(Functional Interface)。Java 提供了注解 @FunctionalInterface 来标识函数式接口,编译器会检查是否符合规范。Lamdba是有特有的格式的,按照下面的格式来编写Lamdba。(被重写方法的形参列表) -> {被重写方法的方法体代码;

2401_83377623的博客 1092

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7720

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2195

Java8 lambda表达式10个示例

例1、用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例。看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类。 // Java 8之前: new Thread...

一线工作者的所见、所闻...... 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java8 Lambda表达式

Java8 Lambda表达式是简洁的匿名函数写法,用于实现函数式接口。基本语法为(参数) -> 表达式,支持类型推断和简化写法。核心概念包括函数式接口(如Predicate、Consumer、Function、Supplier等)、方法引用(四种类型:静态/实例/构造方法引用)和Stream API(用于集合处理)。方法引用简化了Lambda表达式,Stream API提供了函数式集合操作方式,包括中间操作和终端操作。这些特性使Java代码更简洁、可读性更强。

qq_44474810的博客 1036

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java8之lambda表达式

Java8之lambda表达式lambda表达式接口里是否能有实现方法?代码 lambda表达式 什么是Lambda Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符或剪头操作符。它将 Lambda 分为两个部

Hello World 633

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java8 Lambda 表达式

Java 8 Lambda 表达式是一个匿名函数。匿名函数是指没有名字且不与任何类绑定的函数。

m0_73257876的博客 1147

Java 8 的lambda表达式

Java的Lambda表达式

古城的博客 1078

Java 8 Lambda 表达式

Lambda 表达式是一个匿名函数,我们可以把lambda表达式理解为一段 可以传递的代码(将代码段像数据一样传递)。使用它可以写出更简洁, 更灵 活的代码。作为一种更紧凑的代码风格,使java语言的表达式能力得到的提升。Lambda 表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为 常规的代码,因此你可以使用更少的代码来实现同样的功能。Lambda表达式只支持函数式接口也就是只有一个抽象方法的接口.功能 接口是java8中的新增功能,它们只允许一个抽象方法。这些接口也称为单抽 象方法接口。

2301_78085386的博客 757

java8 Lambda 表达式

lambda介绍 λ ,希腊字母表中排序第十一位的字母,英语名称为Lambda。 lambda 表达式,也可称为闭包,它是推动Java 8 发布的最重要新特性,允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 当需要启动一个线程去完成任务时,代码量太多了,只有run方法体才是关键。jdk8就加入了lambda表达式。 public class Demo01Runnable { public static void main(String[] args) { // 匿名内部类 Runnab

jiqiren1994的博客 476

Java8引入的lambda表达式

Java8引入的lambda表达式Java 8 引入的功能中,最让人期盼的是 lambda 表达式。lambda 表达式以字面量的形式把少量代码直接写在程序中,而且让 Java 编程更符合函数式风格。其实,lambda 表达式的很多功能都能使用嵌套类型通过回调和处理程序等模式实现,但使用的句法总是非常冗长,尤其是,就算只需要在回调中编写一行代码,也要完整定义一个新类型。lambda 表达式其实就是没

GodV的博客 1135

Java8 lambda表达式

一、Java8新特性 Java8最大的变化就是引入了lambda表达式,一种紧凑的传递行为的方式,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等,主要新特性如下: Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 方法引用 −方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的...

希望我的博客,能解决你工作中的问题 423
上一篇: rabbitMq docker安装以及简单使用(springboot)
下一篇: 初识 groovy
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值