花几千上万学习Java,真没必要!(四十六)

news2024/11/15 8:15:47

Lambda表达式:

 

 

测试代码1:

package test.lambda;
public class LambdaDemo {  
	  
    // 实现Runnable接口的类  
    static class MyThread implements Runnable {  
        @Override  
        public void run() {  
            System.out.println("线程运行中:通过实现Runnable接口");  
        }  
    }  
  
    public static void main(String[] args) {  
        // 通过实现Runnable接口的类启动线程  
        Thread thread1 = new Thread(new MyThread());  
        thread1.start();  
  
        // 使用匿名内部类启动线程  
        Thread thread2 = new Thread(new Runnable() {  
            @Override  
            public void run() {  
                System.out.println("线程运行中:通过匿名内部类");  
            }  
        });  
        thread2.start();  
  
        // 使用Lambda表达式启动线程  
        Thread thread3 = new Thread(() -> System.out.println("线程运行中:通过Lambda表达式"));  
        thread3.start();  
  
        // 由于线程调度的不确定性,三个线程的输出顺序变化。  
    }  
}

运行结果如下:

 

测试代码2:

package test.lambda;
//定义一个函数式接口,包含一个无参无返回值的抽象方法。  
@FunctionalInterface
interface Action {
	void perform();
}

class TaskExecutor {
	// 定义一个方法,该方法接受一个Action类型的参数
	void execute(Action action) {
		// 调用Action接口的perform方法
		action.perform();
	}
}

public class LambdaTest {
	public static void main(String[] args) {
		// 创建TaskExecutor的实例
		TaskExecutor executor = new TaskExecutor();
		
		// 使用匿名内部类传递Action接口的实例  
        executor.execute(new Action() {  
            @Override  
            public void perform() {  
                System.out.println("通过匿名内部类执行一个无参无返回值的操作");  
            }  
        });  

		//使用Lambda表达式作为参数传递给execute方法。
		//这个Lambda表达式实现了Action接口的perform方法,并在其中打印一条消息。
		executor.execute(() -> {
			System.out.println("通过Lambda表达式执行一个无参无返回值的操作");
		});
	}
}

运行结果如下:

 

测试代码3:

package test.lambda;

//定义一个函数式接口,包含一个有参无返回值的抽象方法。  
@FunctionalInterface
interface Greeter {
	void greet(String name);
}


class GreetingService {
	// 该方法接收一个Greeter类型的参数并调用其greet方法
	void sayHello(Greeter greeter) {
		greeter.greet("World"); 
	}
}

public class LambdaWithParameters {
	public static void main(String[] args) {
		// 创建GreetingService的实例
		GreetingService service = new GreetingService();
		
		//使用匿名内部类
		service.sayHello(new Greeter() {

			@Override
			public void greet(String name) {
				System.out.println("Hello, " + name + "!!!!!!!!!!!");
				
			}});

		// 使用Lambda表达式传递Greeter接口的实例
		service.sayHello((String name) -> {
			System.out.println("Hello, " + name + "**********");
		});

		// 更简洁的Lambda表达式(在参数类型可以推断出来时,可以省略参数类型)
		service.sayHello(name -> System.out.println("Hello, " + name + "..........."));
	}
}

运行结果如下:

 

测试代码4:

package test.lambda;
//定义一个函数式接口,接收一个字符串参数并返回一个布尔值。  
@FunctionalInterface
interface StringChecker {
	boolean check(String str);
}


class StringProcessor {
	// 该方法接收一个StringChecker和一个字符串,然后调用StringChecker的check方法。
	void processString(StringChecker checker, String input) {
		if (checker.check(input)) {
			System.out.println(input + " meets the criteria.");
		} else {
			System.out.println(input + " does not meet the criteria.");
		}
	}
}

public class LambdaStringExample {
	public static void main(String[] args) {
		// 创建StringProcessor的实例
		StringProcessor processor = new StringProcessor();
		
		//使用匿名内部类
		processor.processString(new StringChecker() {
			
			@Override
			public boolean check(String str) {
				
				System.out.print("匿名内部类.............."+"\n");
				
				return false;
			}
		}, null);
		// 使用Lambda表达式传递StringChecker接口的实例
		// 检查字符串长度是否大于5
		processor.processString(str -> str.length() > 5, "Hello");
		processor.processString(str -> str.length() > 5, "Hello, World!");
		
		// 使用Lambda表达式传递StringChecker接口的实例
		// 检查字符串是否包含特定子串
		processor.processString(str -> str.contains("Java"), "This is a Java program.");
		processor.processString(str -> str.contains("Python"), "This is a Java program.");
	}
}

运行结果如下:

 

.................................................................................................................................................... 

 

测试代码:

package test.lambda;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

//定义函数式接口  
@FunctionalInterface
interface Greeting {
	void greet(String name);
}

@FunctionalInterface
interface StringSupplier {
	String get();
}

@FunctionalInterface
interface Sum {
	int sum(int a, int b);
}

public class LambdaOmitMode {
	public static void main(String[] args) {
		// 使用Lambda表达式,省略参数类型,实现Greeting接口
		Greeting greeting = name -> System.out.println("Hello, " + name + "!");
		greeting.greet("Lambda");

		// 使用Lambda表达式,省略大括号、分号和return关键字,实现StringSupplier接口
		StringSupplier supplier = () -> "Hello from Lambda Supplier!";
		System.out.println(supplier.get());

		// 使用Lambda表达式,省略参数类型但不省略小括号(因为有两个参数),实现Sum接口
		Sum sum = (a, b) -> a + b;
		System.out.println("Sum: " + sum.sum(5, 3));

		
		// 过滤出长度大于3的字符串
		List<String> strings = Arrays.asList("Java", "Python", "C++", "Scala");
		List<String> filtered = strings.stream().filter(s -> s.length() > 3) 
				.collect(Collectors.toList());

		// 打印过滤后的结果
		System.out.println("Filtered Strings: " + filtered);
	}
}

运行结果如下:

 

....................................................................................................................................................

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【智能流体力学】ANSYS Fluent流体仿真基础、深度学习驱动思想及其CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …

Datawhale AI 夏令营 第四期 AIGC Task2

活动简介 活动链接&#xff1a;Datawhale AI 夏令营&#xff08;第四期&#xff09; 以及AIGC里面的本次任务说明&#xff1a;Task 2 精读代码&#xff0c;实战进阶 和上次任务一样&#xff0c;链接里的教程非常详细&#xff0c;对小白非常友好&#xff0c;从使用AI助手理解…

网工内推 | 网络、集成工程师,最高17K,NP以上认证优先

01 广东南方新媒体股份有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1、负责基础设施运维管理&#xff0c;包括机房环境设备、网络设备、安全设备与服务器等&#xff0c;负责机房设备上架、下架、位置调整、布线等的常规操作。…

day36——homework

二、基于UDP的TFTP文件传输 1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&am…

数据同步工具DataX

目录 1.概要 2.简介 3.DataX处理异构数据源 4.DataX的框架 5.DataX的核心架构 6.DataX的安装 7.DataX的使用案例 8.mysql同步到mysql案例 1.概要 本篇文件将介绍一款数据同步工具DataX的原理&#xff0c;安装&#xff0c;以及使用。 2.简介 官网连接&#xff1a;https…

STL经典案例(二)——公司招员工

需求&#xff1a;公司招了十个员工ABCDEFGHIJ&#xff0c;公司有五个部门&#xff0c;公司随机给这十个员工分配薪水&#xff0c;并且随机将这十名员工分配到不同的部门。 员工类中成员属性为姓名和工资&#xff0c;成员方法为设置姓名、设置工资、获得姓名、获得工资 部门有五…

Electron 开发桌面应用程序用于对接USB Audio Class协议

开发用于对接USB Audio Class协议的Electron桌面应用程序是一个复杂的任务&#xff0c;可能涉及多个开源库和项目的组合。以下是一些开源项目和库&#xff0c;它们可以帮助你实现这个目标&#xff1a; 1. Electron Electron 是一个用于构建跨平台桌面应用程序的框架。你可以使…

【云原生】Prometheus Pushgateway使用详解

目录 一、前言 二、Pushgateway概述 2.1 什么是Pushgateway 2.1.1 Pushgateway在Prometheus中的位置 2.2 为什么需要Pushgateway 2.3 Pushgateway作用 2.4 Pushgateway 工作原理 2.5 Pushgateway 使用场景 2.6 Pushgateway 优缺点 三、Pushgateway 部署 3.1 二进制安…

[C#]基于C# winform结合llamasharp部署llama3中文的gguf模型

【llmasharp源码】 https://github.com/SciSharp/LLamaSharp 【测试模型】 https://www.modelscope.cn/pooka74/LLaMA3-8B-Chat-Chinese-GGUF.git 【测试通过环境】 vs2019 netframework4.7.2 llamasharp0.15.0 cuda11.7.1cudnn8.8.0 注意测试发现使用cpu推理非常卡&a…

Stable Diffusion绘画 | ControlNet应用-SoftEdge(软边缘):让转绘更柔和

SoftEdge(软边缘) Canny(硬边缘) 有时候捕捉的细节过多&#xff0c;其实有时候并不需要那么多的细节。 例如下图中&#xff0c;围巾上的网格细节全部都被捕捉下来了&#xff1a; 切换到「SoftEdge(软边缘)」&#xff0c;它只重点抓取轮廓边缘&#xff0c;而且线条会比 Canny …

优购电商小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;留言板管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#xf…

入门 PyQt6 看过来(项目)26 在线购物-主页面

功能导航页面很简单&#xff0c;就几个按钮功能。效果如下图&#xff1a; 1 主界面 ​ 包含 “商品选购”、”下单结算“、”销售分析“四个按钮以及“功能导航”标题。 2 工程目录 首先先创建工程目录及子目录&#xff1a; ​ 3 代码 主窗口文件为Main.py&#xff0c;其…

第2章 C语言基础知识

第2章 C语言基础知识 1.printf()函数 在控制台输出数据&#xff0c;需要使用输出函数&#xff0c;C语言常用的输出函数为printf()。 printf()函数为格式化输出函数&#xff0c;其功能是按照用户指定的格式将数据输出到屏幕上。 printf(“格式控制字符串”,[输出列表]); 格式控…

C++ 124类和对象_运算符重载_赋值

C 124类和对象_运算符重载_赋值 学习内容 解决自定义对象之间赋值是因析构函数重复释放内存时引发的异常问题 结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错//类和对象_运算符重载_赋值 //学习内容 //解决自定义对…

【Qt】Qt窗口 | 菜单栏QMenuBar

文章目录 一. 菜单栏二. 代码创建&使用菜单栏1. 创建菜单栏2. 在菜单栏中添加菜单3. 创建菜单项4. 在菜单项之间添加分割线5. 添加快捷方式6. 菜单/菜单项添加图标7. 添加子菜单 三. 图形化创建菜单栏 窗口 Qt 中窗口是通过QMainWindow类实现的 QMainWindow 是一个为用户提…

React使用useRef ts 报错

最近在写自己的React项目&#xff0c;我在使用useRef钩子函数的时候发现 TS2322: Type MutableRefObject<HTMLDivElement | undefined> is not assignable to type LegacyRef<HTMLDivElement> | undefined Type MutableRefObject<HTMLDivElement | undefined&g…

代码随想录算法训练营第十五天(一)| 110.平衡二叉树 (优先掌握递归)257. 二叉树的所有路径

110.平衡二叉树 题目&#xff1a; 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;fa…

vuex的原理和使用方法

简介 Vuex 是 Vue.js 应用的状态管理模式&#xff0c;它为应用内的所有组件提供集中式的状态&#xff08;数据&#xff09;管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state&#xff1a;state 是 Vuex 的数据中心&#xff0c;也就是说state是用来…

【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】

一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…

软件运维实施维保方案(Doc完整版原件)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产…