当前位置: 首页 > news >正文

第14章总结:lambda表达式与处理

14.1: lambada表达式
14.1.1:lambada表达式简介

无参数

package fourteen;
    interface SayhHi{
        String say();//抽象方法接口
    }
 
 
public class NoParamDemo {
    public static void main(String[] args) {
        //无参数
        //利用匿名内部类补全方法体
         SayhHi sh1 = new SayhHi() {
             public String say() {
                 return "这是匿名内部类";
             }
         };
         System.out.print(sh1.say());
    }
 
}

使用表达式表达

         System.out.print(sh1.say());
         //利用lambda表达式补全方法体
         SayhHi sh2 =() -> {
             return "这是lambda表达式";
         };
         System.out.println(sh2.say());
         
    }
 
}
 

有参数

使用表达式

package fourteen;
interface AddInt{
     int add(int a,int b);//抽象方法接口
}
 
public class Prama {
 
    public static void main(String[] args) {

   //有参数
        //利用匿名内部类补全方法体
        AddInt ai1 = new AddInt() {
             public int add(int a,int b){
                 return a+b;
             }
         };
         System.out.println("匿名内部类:"  + ai1.add(3, 5));
         //利用lambda表达式补全方法体
         AddInt ai2=( a, b) -> {
             return a+b ;
         };
         System.out.println("lambda表达式:"+ai2.add(3, 5));
         
    }
 
}

例题

package fourteen;
interface CheckGrade {
    String check(int grade); // 查询成绩结果
}
 
public class GradeDemo {
    public static void main(String[] args) {
        CheckGrade g = (n) -> { // lambda实现代码块
            if (n >= 90 && n <= 100) { // 如果成绩在90-100
                return "成绩为优"; // 输出成绩为优
            } else if (n >= 80 && n < 90) { // 如果成绩在80-89
                return "成绩为良"; // 输出成绩为良
            } else if (n >= 60 && n < 80) { // 如果成绩在60-79
                return "成绩为中"; // 输出成绩为中
            } else if (n >= 0 && n < 60) { // 如果成绩小于60
                return "成绩为差"; // 输出成绩为差
            } else { // 其他数字不是有效成绩
                return "成绩无效"; // 输出成绩无效
            }
        }; // 不要丢掉lambda语句后的分号
        System.out.println(g.check(89)); // 输出查询结果
    }
}
//14.3


//使用方法的引用补全方法体

双冒号::

static int add(int x, int y) {//方法的引用,这是方法体的方法

return x+y;

}

static int add(int x, int y) {//方法的引用,这是方法体的方法

return x+y;

}

完整代码

package fourteen;
interface AddInt{
     int add(int a,int b);//抽象方法接口
}
 
public class Prama {
    static int add(int x, int y) {//方法的引用,这是方法体的方法
        //对象也可以找到这个方法体,非静态
        return x+y;
    }
    
 
    public static void main(String[] args) {
        //有参数
        //利用匿名内部类补全方法体
        AddInt ai1 = new AddInt() {
             public int add(int a,int b){
                 return a+b;
             }
         };
         System.out.println("匿名内部类:"  + ai1.add(3, 5));
         //利用lambda表达式补全方法体
         AddInt ai2=( a, b) -> {
             return a+b ;
         };
         System.out.println("lambda表达式:"+ai2.add(3, 5));
         //使用方法的引用补全方法体
         AddInt ai3 = Prama::add;//找到类,找到方法体
         System.out.println("方法体:"+ai3.add(3, 5));
         
    }
 
}

例14.8

package fourteen;
 
import java.text.SimpleDateFormat;
import java.util.Date;
interface InstanceMethodInterface {                    // 创建测试接口
    String method(Date date);                           // 带参数的抽象方法
}
public class InstanceMethodDemo {
    public String format(Date date) {                  // 格式化方法
        // 创建日期格式化对象,并指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(date);                       // 返回格式化结果
    }
 
    public static void main(String[] args) {
        // 创建类对象
        InstanceMethodDemo demo = new InstanceMethodDemo();
        // 引用类对象的方法
        InstanceMethodInterface im = demo::format;
        Date date = new Date();                       // 创建日期对象
        System.out.println("默认格式:" + date);     // 输出日期对象默认格式
        // 输出经过接口方法处理过的格式
        System.out.println("接口输出的格式:" + im.method(date));
    }
}//14.8

//调用构造器

package fourteen;
    interface ConIn{
        ConDemo action();//创建接口,正好是这个类的构造器类型,抽象方法
        
    }
public class ConDemo {
    //使用无参的构造方法补全方法体
    public ConDemo() {//构造方法要写小括号
        System.out.println("无参构造方法");//构造方法
    }
    public ConDemo(int a) {//构造方法要写小括号
        System.out.println("有参构造方法");//构造方法
    }
    public static void main(String args[]) {
        ConIn ci1 = ConDemo:: new;//new一个对象
        ci1.action();//调用action方法
        //使用有参数的方法来补全方法体
        //ConDemo action(int a);
        //ConIn ci1 = ConDemo:: new;//new一个对象
        //ci1.action(5);//调用action方法
    }
    
}

流:

static List<Employee> getEmpList() { // 提供数据初始化方法
        List<Employee> list = new ArrayList<Employee>();
        // 添加员工数据
        list.add(new Employee("老张", 40, 9000, "男", "运营部"));
        list.add(new Employee("小刘", 24, 5000, "女", "开发部"));
        list.add(new Employee("大刚", 32, 7500, "男", "销售部"));
        list.add(new Employee("翠花", 28, 5500, "女", "销售部"));
        list.add(new Employee("小马", 21, 3000, "男", "开发部"));
        list.add(new Employee("老王", 35, 6000, "女", "人事部"));
        list.add(new Employee("小王", 21, 3000, "女", "人事部"));
        return list;

 stream接口

package fourteen;
 
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class StreamDemo {
    
    public static void main(String[] args) {
    List<Employee> list=Employee.getEmpList();//从employee表拿到list表中的员工表
    Stream<Employee> stream = list.stream();//调用list方法将表转换成流
    //筛选年龄>30岁的员工
    stream=stream.filter(sx-> sx.getAge()>30);//写条件,sx属于临时变量
    //限制条数
    stream = stream.limit(2);
    List<Employee> result = stream.collect(Collectors.toList());//转成List链表
    for (Employee sx : result) {//for循环输出结果
        System.out.println(sx);
        
    }
    }
 
}

数据分组

package fourteen;
 
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class GroupDemo {
 
    public static void main(String[] args) {
        // 分组
        List<Employee> list=Employee.getEmpList();//从employee表拿到list表中的员工表
        Stream<Employee> stream = list.stream();//调用list方法将表转换成员工流
        Map<String,List<Employee>> map = //创建map集合存入,String代指dept,list链表指代map集合的value
        stream.collect(Collectors.groupingBy(Employee::getDept));//利用流调用collect方法,分组方法,传入方法
        Set<String> depts = map.keySet();//获取map集合中的部门表
        for(String dept:depts){//for循环一个部门,depts代指部门
            System.out.println(dept+"员工信息如下:");//输出信息
            List<Employee> temp = map.get(dept);//分组列表输出
            for(Employee g : temp){//temp是临时变量
                System.out.println(g);//
            }
            System.out.println();
        }
        
        
 
    }
 
}
 

相关文章:

第14章总结:lambda表达式与处理

14.1&#xff1a; lambada表达式 14.1.1&#xff1a;lambada表达式简介 无参数 package fourteen; interface SayhHi{ String say();//抽象方法接口 } public class NoParamDemo { public static void main(String[] args) { //无参数 …...

多尺度retinex图像去雾算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd)); rng(default)img_in im2doub…...

蓝桥等考Python组别十八级005

第一部分:选择题 1、Python L18 (15分) 运行下面程序,输入30,输出的结果是( )。 t = int(input()) if t < 30: print(0) else: print(t // 15 * 2) 4102030正确答案:A 2、Python L18 (15分)...

redis在linux系统的安装与使用

一、单机安装Redis。 1.安装redis依赖 在控制台输入 yum install -y gcc tcl2.上传安装包 下载好的安装包上传到/usr/local/src/ 上传方法&#xff1a; 1.确保你拥有Linux服务器的IP地址、用户名和密码。 2.在Windows上&#xff0c;打开命令提示符&#xff08;Command Promp…...

PanoFlow:学习360°用于周围时间理解的光流

1.摘要&#xff1a; 光流估计是自动驾驶和机器人系统中的一项基本任务&#xff0c;它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野&#xff08;FoV&#xff09;◦ 全景传感器。 然而&#xff0c;由于全景相机独特的成像过程&#xff0c;为针孔图像设计…...

C# - 常用API

Assembly.GetCallingAssembly 方法 获取当前方法的调用程序集: Console.WriteLine("FirstMethod called from: " Assembly.GetCallingAssembly().FullName); Assembly.GetExecutingAssembly 方法 获取包含当前执行的代码的程序集: //获取当前执行的代码的程序集…...

新式茶饮品牌如何写出生活感软文

居民消费水平的提升使新式茶饮品牌的市场不断扩张&#xff0c;在竞争激烈的茶饮市场中&#xff0c;品牌提高知名度的主要方式之一就是软文营销&#xff0c;而生活感软文是茶饮软文中较为常见的类型&#xff0c;它能有效拉进品牌与消费者之间的距离&#xff0c;那么新式茶饮品牌…...

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

使用c视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加…...

gogs和drone如何配合使用

上篇介绍了drone和gogs安装方法&#xff0c;这次介绍这两个如何使用&#xff0c;此篇文章主要介绍在物理机上进行发布。 此处用到的java项目地址&#xff1a;https://gitee.com/huningfei/demo-test 一 配置gogs 1.1 在Gogs中配置指定仓库的”.drone.yml“文件 1.2 ssh-drone…...

Feign客户端的配置与使用

feign Feign的基本使用Feign客户端抽取 Feign的基本使用 Feign是一个声明式的Web服务客户端&#xff0c;它使得编写Web服务客户端变得更加简单。 1、首先&#xff0c;需要在项目中引入Feign的相关依赖。在Maven项目中&#xff0c;可以添加以下依赖&#xff1a; <dependen…...

【数据结构】队列(Queue)实现详解

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要了解实现队列的相关操作。 目录&#xff1a; &#x1f30d; 队列&#x1f52d;概念&#x1f52d;结构&…...

23.10.13数据库升级流程记录

23.10.13数据库升级流程记录 hello&#xff0c;我是阿昌&#xff0c;今天记录一下数据库升级的流程&#xff0c;内容如下&#xff1a; 一、升级的内容 将之前的数据库升级为8.0版本&#xff0c;切只涉及一个分库&#xff1b; 二、升级的时机 涉及到数据库升级&#xff0c;…...

【three.js】结合vue进行开发第一个3d页面

一、创建vue项目 新建一个项目目录&#xff0c;在集成终端打开&#xff0c;输入 npm init vitelatest 回车后&#xff0c;依次输入项目名&#xff0c;选择vue和js开发 然后安装依赖并运行项目 二、安装three 接下来我们开始安装three npm install three 三、Three.js 的…...

【Vue】同一个页面多次复用同一个组件数据相互干扰问题

文章目录 问题描述解决方法 问题描述 第二个child会受到第一个child的影响而线上666的值 <template><child :value"666" /><child /> </template> <script> import child from ./child; export default {components: {child,},data(…...

【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;CIFAR10Dataset&#xff09; a. read_csv_labels&#xff08;&#xff09; b. CIFAR10Dataset 2. 构建模型&#xff08;FeedForward&#x…...

HarmonyOS学习 -- ArkTS开发语言入门

文章目录 一、编程语言介绍二、TypeScript基础类型1. 布尔值2. 数字3. 字符串4. 数组5. 元组6. 枚举7. unknown8. void9. null 和 undefined10. 联合类型 三、TypeScript基础知识条件语句if语句switch语句 函数定义有名函数和匿名函数可选参数剩余参数箭头函数 类1. 类的定义2.…...

早安心语|不委屈不将就,让生活充满仪式感

1、让自己的生活多一种可能&#xff0c;给自己的未来多一份惊喜&#xff0c;人生所有的机会和惊喜&#xff0c;都是在你全力以赴的道路上遇到的。 2、推开自己喜欢的人叫成长&#xff0c;留住自己喜欢的人叫本事&#xff0c;总有人嫌你不够好&#xff0c;也有人觉得你哪都好&am…...

[Python进阶] 操纵键盘:pyuserinput

6.3 操纵键盘&#xff1a;pyuserinput 6.3.1 说明 在安装pyuserinput库时会自动安装PyMouse和PyKeyboard库。前者主要用来操作鼠标&#xff0c;包括鼠标的点击、移动等。后者主要用来操作键盘&#xff0c;包括键盘按键的按下、弹起等。这两个库还可以同时对鼠标和键盘的事件进…...

解析Moonbeam的安全性、互操作性和市场竞争力

Moonbeam依托Polkadot Substrate框架构建&#xff0c;用Rust程序设计语言创建的智能合约区块链平台&#xff0c;在继承Polkadot安全性的基础上为项目提供以太坊虚拟机&#xff08;EVM&#xff09;的兼容性和原生的跨链互操作性优势。Moonbeam的EVM兼容性表示开发者无需学习Subs…...

RPA是什么?怎么成为RPA高手?

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种技术&#xff0c;通过软件机器人模拟人类在计算机上执行重复性任务&#xff0c;从而提高生产力、减少错误并降低成本。RPA 可以广泛应用于金融、医疗、制造、零售等多个行业&#xff…...

Gemma-3-12b-it开源大模型落地:教育场景中图表解析与作业辅导应用

Gemma-3-12b-it开源大模型落地&#xff1a;教育场景中图表解析与作业辅导应用 1. 项目背景与核心价值 在教育领域&#xff0c;学生和教师经常面临图表解析和作业辅导的挑战。传统方法需要人工查阅资料或依赖专业软件&#xff0c;效率低下且成本高昂。Gemma-3-12b-it多模态交互…...

RestTemplate遇到非RESTful接口怎么办?3种表单参数处理方案对比

RestTemplate应对非RESTful接口的实战指南 在现实开发中&#xff0c;我们常常会遇到各种不符合RESTful规范的接口设计。这些接口可能采用传统的表单传参方式&#xff0c;或是混合了路径参数与查询参数的"四不像"设计。本文将深入探讨三种高效处理这类非标准接口的方案…...

3分钟彻底搞定Axure RP汉化:免费中文语言包完整指南

3分钟彻底搞定Axure RP汉化&#xff1a;免费中文语言包完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在…...

usearch的API测试数据生成:使用Faker创建模拟数据

usearch的API测试数据生成&#xff1a;使用Faker创建模拟数据 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...

Pi0具身智能v1快速部署指南:一键启动交互测试页面

Pi0具身智能v1快速部署指南&#xff1a;一键启动交互测试页面 1. 环境准备与镜像部署 1.1 选择合适的基础环境 在开始部署Pi0具身智能v1之前&#xff0c;请确保您的平台满足以下基本要求&#xff1a; 硬件配置&#xff1a;建议至少16GB显存的GPU&#xff08;如NVIDIA RTX 3…...

StructBERT在嵌入式Linux设备上的轻量化部署方案

StructBERT在嵌入式Linux设备上的轻量化部署方案 1. 为什么要在树莓派上跑StructBERT 你可能已经试过在笔记本或服务器上运行大模型&#xff0c;但有没有想过让AI在树莓派这样的小设备上工作&#xff1f;不是为了炫技&#xff0c;而是因为很多实际场景根本用不上那么大的机器…...

从ULN2803芯片内部拆解,聊聊三极管“黄金搭档”达林顿管到底强在哪?

ULN2803芯片拆解&#xff1a;达林顿管如何成为三极管的“黄金搭档”&#xff1f; 当我们需要用单片机的微弱IO口信号&#xff08;通常只有几毫安&#xff09;驱动继电器、电机这类“大胃王”负载时&#xff0c;就像试图用一根吸管给游泳池注水——理论可行&#xff0c;实际效率…...

LoRA训练助手入门解析:为什么权重排序对LoRA训练效果影响显著

LoRA训练助手入门解析&#xff1a;为什么权重排序对LoRA训练效果影响显著 1. 认识LoRA训练助手 如果你正在尝试训练自己的AI绘画模型&#xff0c;可能会遇到一个常见问题&#xff1a;为什么同样的图片&#xff0c;用不同的标签训练出来的效果差距那么大&#xff1f;这就是我们…...

OpenRouter最新免费额度调整:如何用微信支付宝充值解锁1000次/天API调用

OpenRouter API调用新规解析&#xff1a;微信支付宝充值实战指南 最近OpenRouter平台对免费API调用额度进行了重要调整&#xff0c;这一变化直接影响着国内开发者和AI爱好者的日常使用体验。作为聚合了300多个主流AI模型的统一接口平台&#xff0c;OpenRouter一直以友好的免费政…...

技术揭秘:QtScrcpy如何实现跨平台Android投屏与低延迟控制

技术揭秘&#xff1a;QtScrcpy如何实现跨平台Android投屏与低延迟控制 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScr…...