lambda表达式的写法1

news/2024/10/18 21:23:16/文章来源:https://www.cnblogs.com/ndmtzwdx/p/18475070

一、lambda表达式的含义

Lambda 表达式是 Java 8 引入的一种简洁的语法,用于表示匿名函数或传递行为。它使得我们可以更简洁地表达代码中的行为和函数逻辑,特别是在使用函数式接口时(如 Consumer、Supplier、Function<T, R> 等)。Lambda 表达式可以大大简化代码,尤其是当我们需要为接口的单个抽象方法提供实现时。

二、基本的写法

interface Inter1 {void fun1();
}interface Inter2 {void fun1(String s);
}interface Inter3 {String fun1(String s1, String s2);
}public class LambdaDemo {public static void main(String[] args) {/*** 场景1*///无参数,无返回值
//        show1(()->{
//            System.out.println("好好学习,天天向上!");
//        });// 如果方法逻辑体只有一行的时候,可以将大括号省略
//        show1(()-> System.out.println("好好学习,天天向上!"));/*** 场景2*/// 有一个参数,无返回值
//        show2((String s)->{
//            System.out.println(s+": 江川");
//        });// 左边的参数类型可以省略不写, jvm会做自动类型上下文推断
//        show2((s) -> System.out.println(s + ": 江川"));// 若只有一个参数,小括号可以省略不写
//        show2(s -> System.out.println(s + ": 江川"));/*** 场景3*///有两个以上的参数,有返回值,并且 Lambda 体中有多条语句
//        show3((String s1,String s2)->{
//            return s1+"-数加-"+s2;
//        });// 若Lambda 体中只有一条语句,return和大括号都可以省略不写
//        show3((s1, s2) -> s1 + "-数加-" + s2);}public static void show3(Inter3 inter3) {System.out.println(inter3.fun1("hello", "world"));}public static void show2(Inter2 inter2) {inter2.fun1("hello");}public static void show1(Inter1 inter1) {inter1.fun1();}
}

三、具体实例

1.先创建一个Staff类,里面有基本的成员

public class Staff {private String id;private String name;private int age;private int salary;public Staff() {}public Staff(String id, String name, int age, int salary) {this.id = id;this.name = name;this.age = age;this.salary = salary;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}@Overridepublic String toString() {return "Staff{" +"id='" + id + '\'' +", name='" + name + '\'' +", age=" + age +", salary=" + salary +'}';}
}

2.进行测试使用lambda表达式

1.Staff类同上,这里就不重复写了

2.编写接口

public interface FilterStaff {boolean fun(Staff staff);
}

3.案例

import java.util.ArrayList;import java.util.List;public class StaffDemo1 {public static void main(String[] args) {ArrayList<Staff> list1 = new ArrayList<>();list1.add(new Staff("sj1001","彭于晏",23,30000));list1.add(new Staff("sj1002","吴彦祖",13,10000));list1.add(new Staff("sj1003","胡歌",21,24000));list1.add(new Staff("sj1004","章若楠",18,26000));list1.add(new Staff("sj1005","杨幂",26,35000));//需求:过滤出薪资大于20000的人的信息List<Staff> list2= FilterWithCollection(list1,s-> s.getSalary()>20000);for (Staff staff : list2) {System.out.println(staff);}}public static List<Staff> FilterWithCollection(List<Staff> staff,FilterStaff filterStaff){ArrayList<Staff> staff1 = new ArrayList<>();for (Staff staff2 : staff) {if(filterStaff.fun(staff2)){staff1.add(staff2);}}return staff1;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈 tarjan

就是记录两个数组:dfn[]和low[] 其中dfn[]表示访问的顺序,low[u]用来存储 \(u\) 不经过其父亲能到达的最小时间戳。。。 搬一下 wiki 的图。。。我们发现 \(low[v]\ge dfn[u]\) 可以表示不能回到祖先,则 \(u\) 点位割点。。。 直接上代码P3388------> #include <bits/…

正点原子新起点V2开发板FPGA关于SDRAM代码解读

正点原子新起点V2开发板FPGA关于SDRAM代码解读 1. SDRAM 概述 SDRAM(Synchronous Dynamic Random Access Memory)是一种同步动态随机存储器,广泛用于FPGA项目中。通过SDRAM控制模块,可以实现数据读写、刷新等操作。本文对SDRAM的控制模块进行详细解读,分析代码中的命令控制…

面试题速刷 - 实战会碰到的一些问题

页面如何进行首屏优化?路由懒加载服务端渲染SSR只获取HTML就可以,里面包含data。 APP预取(啥东西)APP结合H5、结合JS bridge 分页图片懒加载 lazyloadHybrid总结:后端一次性返回10w条数据,你会如何渲染? 本身后端设计方案的设计就不合理!非要的话......自定义中间层:虚…

氏发

这个作业属于哪个课程 2024高级语言程序设计 (福州大学 - 计算机与大数据学院)这个作业要求在哪里 高级语言程序设计课程第三次个人作业学号 102400117姓名 廖逸轩

二、STM32F103C8T6-定时器

STM32F103C8T6 定时器概述 STM32F103C8T6 作为一款广泛使用的微控制器,内置多个定时器,能够支持多种计时和控制功能,如精确延时、脉冲宽度调制(PWM)、捕获比较(Capture/Compare)、输入捕获 和 输出比较 等。这些功能在电机控制、信号测量、周期性事件触发等应用中非常常…

Sparse Table

Sparse Table 可用于解决这样的问题:给出一个 \(n\) 个元素的数组 \(a_1, a_2, \cdots, a_n\),支持查询操作计算区间 \([l,r]\) 的最小值(或最大值)。这种问题被称为区间最值查询问题(Range Minimum/Maximum Query,简称 RMQ 问题)。预处理的时间复杂度为 \(O(n \log n)\…

计量经济学(十一)——联立方程模型的估计

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 联立方程模型(Simultaneous Equations Model, SEM)是一类包含多个相互依赖变量的统计模型,用来描述这些变量之间的相互关系。在传统的单一方程模型中,通常…

数据结构与算法 课程随记

数据结构与算法 课程随记因为有时候需要在不同设备编辑同一份文档,本地不太方便了,先在放着博客园比较省事吧。 但是博客园是不是快要四了啊,没事再整一个个人博客吧。 Class https://www.runoob.com/cplusplus/cpp-classes-objects.html大纲 定义成员函数,(无论public/pri…

pve安装后删除local-lvm并把其空间全部分给local

在安装pve的时候,系统默认分配给local的空间非常小,我们可以通过以下方法把local-lvm删除,并将其空间还给local。 在webui的pve节点的磁盘选项中找到LVM-Thin,删除data卷。删除后此处为空。 接着打开终端执行以下命令: lvresize --extents +100%FREE --resizefs pve/root此…

PYNQ Z2 读取xadc外部通道电压

使用XADC 或者JTAG只能读取XADC的内部电压, 而无法读取外部通道的电压 现在使用xsysmon.h库里面的函数进行XADC外部通道的电压 为了方便观察,增加了PL GPIO KEY LED进行观察 1. 配置ZYNQ70002.添加两个axi gpio并进行配置 AXI GPIO0AXI GPIO13. 添加XADC进行配置 这里选择axi l…

10.18 模拟赛

炼石计划 10 月 04 日 NOIP 模拟赛 #8【补题】 - 比赛 - 梦熊联盟 (mna.wang) 复盘 T1 有种 div.2 B 的风格,没秒,想看题。 T2。只判是否无解?\(k \le 100\)?把 \(200\) 个关键连通块拿出来建图跑传递闭包不就做完了。 一遍过大样例?简直不可思议,但还是把 T2 关了吧。 用…

小心!这样分享 B 站视频会暴露身份

已经有被开盒的案例了。‍ 在 2022 年 6 月 10 日 0 点,B 站在视频的网址上加了个参数 ?vd_source=XXXXXXXXXXXXXXX​,如图: ​ 经过网友的测试,这个参数值很可能就是用户 ID 的 hash 值(简单来说就是用户身份),所以如果直接复制网址的话,是有可能被“开盒”的。 ‍ 其…