如何使用Java中Lambda表达式
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容介绍了"如何使用Java中Lambda表达式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目
千家信息网最后更新 2025年11月13日如何使用Java中Lambda表达式
本篇内容介绍了"如何使用Java中Lambda表达式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
理解函数式接口以及 Lambda表达式的发展过程
Lambda表达式及语法
一起来看看具体的使用
你需要注意什么
Lambda的实际运用
1.对集合排序
2.遍历集合
3.遍历集合(带条件)
4.代替 Runnable,开启一个线程
理解函数式接口以及 Lambda表达式的发展过程
任何接口,只包含唯一一个抽象方法,就是函数式接口
/** * lambdab表达式的发展 */public class TestLambda1 { //3.静态内部类 static class Like2 implements ILike{ @Override public void lambda() { System.out.println("i like lambda2"); } } public static void main(String[] args) { ILike like=new Like(); like.lambda(); like=new Like2(); like.lambda(); //4.局部内部类 class Like3 implements ILike{ @Override public void lambda() { System.out.println("i like lambda3"); } } like=new Like3(); like.lambda(); //5.匿名内部类 like=new ILike() { @Override public void lambda() { System.out.println("i like lambda4"); } }; like.lambda(); //6.用lambda简化 like=()->{ System.out.println("i like lambda5"); }; like.lambda(); }}//1.定义一个函数式接口interface ILike{ void lambda();}//2.实现类class Like implements ILike{ @Override public void lambda() { System.out.println("i like lambda"); }}Lambda表达式及语法
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)
也就是说,不需要事先声明参数的类型,圆括号可以没有,大括号可以没有,返回值可以没有
一起来看看具体的使用
public class java8_Lambda_Test { public static final void main(String[] args) { Operator addOper = (a, b) -> a + b; Operator reduceOper = (a, b) -> a - b; Operator multiplyOper = (a, b) -> a * b; Operator DivideOper = (a, b) -> a / b; java8_Lambda_Test test = new java8_Lambda_Test(); System.out.println(test.getResult(3, 3, addOper));//6 System.out.println(test.getResult(3, 3, reduceOper));//0 System.out.println(test.getResult(3, 3, multiplyOper));//9 System.out.println(test.getResult(3, 3, DivideOper));//1 } public int getResult(int a, int b, Operator operator) { return operator.convert(a, b); } public interface Operator { int convert(int a, int b); default int get(int a) { return a; } }}你需要注意什么
1.lambda 表达式只能引用标记了 final 的外层局部变量
2.可以直接在 lambda 表达式中访问外层的局部变量
Lambda的实际运用
1.对集合排序
问题描述:在一个存放了Student对象的list中,按年龄进行排序,输出排序后的list
Student类
public class Student implements Comparable{ private String name; private int age; 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; } @Override public int compareTo(Student student2) { int result =this.age - student2.age; return result; }}
Listlist=new ArrayList<>(); Student s1=new Student(); s1.setName("张三"); s1.setAge(28); list.add(s1); Student s=new Student(); s.setName("李四"); s.setAge(22); list.add(s); sortUsingJava8(list); list.forEach((student) -> System.out.println(student.getName() + ":"+student.getAge()));
// 使用 java 8 排序 static void sortUsingJava8(Listlist){ Collections.sort(list, (student1, student2) -> student1.compareTo(student2)); }
来康康使用Java7进行排序是这样的:
// 使用 java 7 排序 private void sortUsingJava7(Listlist){ Collections.sort(list, new Comparator () { @Override public int compare(String s1, String s2) { return s1.compareTo(s2); } }); }
2.遍历集合
//先准备一个集合 Listlist=new ArrayList<>(); Student s1=new Student(); s1.setName("张三"); s1.setAge(28); list.add(s1); Student s=new Student(); s.setName("李四"); s.setAge(22); list.add(s);//使用 lambda 表达式以及函数操作(functional operation) list.forEach((student) -> System.out.println(student.getName() + ":"+student.getAge()));
3.遍历集合(带条件)
//带条件 打印年龄大于等于20的学生的姓名 list.forEach((student)->{ if (student.getAge()>=20) System.out.println(student.getName()); });4.代替 Runnable,开启一个线程
Runnable r = new Runnable() { @Override public void run() { //to do something }};Thread t = new Thread(r);t.start();现在这样写:
Runnable r = () -> { //to do something};Thread t = new Thread(r);t.start();你还可以这样写:
Thread t = new Thread(() -> { //to do something // such as for for(int i = 0; i < 100; i++){ System.out.println(i); }});t.start;"如何使用Java中Lambda表达式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
表达式
函数
排序
参数
接口
实际
局部
方法
条件
过程
发展
内容
变量
外层
对象
年龄
数字
更多
知识
类型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发预算开发费用
软件开发专业什么意思
广东造机器人服务器
无烬星河数据库有什么用
我的世界服务器无法解析的主机
宁德网络安全管理
供应软件开发工具厂家
sql删除数据库文件组的语句
复制服务器文件
为什么要配置MYSQL数据库
数据库模型类别
数据库基础知识网站
数据处理要求高的数据库
数据库索引重复
国外的服务器费用
网络安全宣传中活动主题是
校园网络安全使用注意事项
win2003数据库镜像
金山区智能软件开发定制价格
报税安全服务器接入地址
软件开发工作具体内容
数据库根结点
静安区推广软件开发费用是多少
郑州新动力网络技术
公网访问公司内网数据库
网络安全的畅想
维护网络安全主要靠技术
游戏软件开发企业账务处理
腾讯云服务器的月流量啥意思
光大银行软件开发笔试