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

甘肃省嘉峪关建设局网站科技网站颜色

甘肃省嘉峪关建设局网站,科技网站颜色,保障性租赁住房管理平台,wordpress 插件 加速Java Lambda 表达式详解:发展史、语法、使用场景及代码示例 1. Lambda 表达式的发展史 背景与动机 JDK 7 前:Java的匿名内部类虽强大,但代码冗余(如事件监听器、集合遍历)。JDK 8(2014)&#…

Java Lambda 表达式详解:发展史、语法、使用场景及代码示例

在这里插入图片描述

在这里插入图片描述


1. Lambda 表达式的发展史

背景与动机
  • JDK 7 前:Java的匿名内部类虽强大,但代码冗余(如事件监听器、集合遍历)。
  • JDK 8(2014):引入Lambda表达式,支持函数式编程,简化代码。
核心目标
  • 代码简洁:用一行代码替代冗长的匿名内部类。
  • 函数式接口:通过@FunctionalInterface标注单方法接口。
  • 并行处理:结合Stream API实现集合的并行操作。

2. Lambda 表达式语法

基本结构
(parameters) -> expression body
关键部分
部分说明
参数列表可省略类型(类型推导),多个参数用逗号分隔,无参数用()
箭头->分隔参数和主体。
表达式主体单表达式(自动返回值)或代码块(需return且无返回值时需void)。

3. 使用场景与代码示例

场景1:集合遍历
// 传统方式(匿名内部类)
list.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}
});// Lambda方式
list.forEach(s -> System.out.println(s)); // 省略参数类型
场景2:函数式接口
@FunctionalInterface
interface MathOperation {int operate(int a, int b);
}// 使用Lambda实现接口
MathOperation add = (a, b) -> a + b;
System.out.println(add.operate(5, 3)); // 输出8
场景3:Comparator 排序
// 传统方式
Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String a, String b) {return b.compareTo(a); // 降序}
});// Lambda方式
list.sort((a, b) -> b.compareTo(a));
场景4:Stream API 处理集合
List<String> filtered = list.stream().filter(s -> s.length() > 3) // 过滤长度>3的字符串.map(String::toUpperCase)    // 转大写.sorted()                    // 排序.collect(Collectors.toList());
场景5:事件监听器
// 传统方式
button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("Button clicked!");}
});// Lambda方式
button.addActionListener(e -> System.out.println("Button clicked!"));
场景6:并行处理
// 并行流计算总和
int sum = numbers.parallelStream().filter(n -> n % 2 == 0) // 过滤偶数.mapToInt(Integer::intValue).sum();
场景7:方法引用
// 直接调用已有方法
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(System.out::println); // 方法引用PrintStream.println()

4. 关键特性详解

(1) 类型推导
// 省略参数类型
List<Integer> numbers = Arrays.asList(1, 2, 3);
numbers.forEach(n -> System.out.println(n)); // 推导为int
(2) 代码块与返回值
// 单表达式(自动返回)
Function<Integer, String> toHex = i -> "#" + Integer.toHexString(i);// 代码块(需显式return)
Function<Integer, String> toHexWithBlock = i -> {String hex = Integer.toHexString(i);return "#" + hex;
};
(3) 作用域与状态
  • 有效变量:只能访问最终变量(final或实际不可变)。
    final int factor = 2;
    list.forEach(n -> System.out.println(n * factor)); // 合法
    

5. 表格总结:Lambda 使用场景与代码示例

场景代码示例说明
集合遍历list.forEach(s -> System.out.println(s));替代for循环或Iterator
函数式接口实现MathOperation add = (a, b) -> a + b;用Lambda替代匿名内部类实现单方法接口。
Comparator排序list.sort((a, b) -> b.compareTo(a));简洁的排序逻辑。
Stream数据处理filtered = list.stream().filter(...).collect(...);声明式数据处理,支持链式调用。
事件监听button.addActionListener(e -> ...);替代冗长的匿名内部类。
并行计算sum = numbers.parallelStream().mapToInt(...).sum();利用多核CPU加速计算。
方法引用names.forEach(System.out::println);直接引用已有方法,更简洁。

6. 注意事项

  1. 函数式接口:必须且只能有一个抽象方法(可通过@FunctionalInterface验证)。
  2. 并行流:需注意线程安全(如ArrayList在并行流中可能引发ConcurrentModificationException)。
  3. 性能:Lambda本质是编译器语法糖,最终生成invokeLambda字节码。
  4. IDE支持:现代IDE(如IntelliJ)可自动将匿名内部类转换为Lambda。

7. 进阶应用:Predicate 和 Consumer

// Predicate(布尔条件)
Predicate<String> isLongString = s -> s.length() > 5;
System.out.println(isLongString.test("Hello")); // false// Consumer(无返回值操作)
Consumer<Integer> printSquare = n -> System.out.println(n * n);
printSquare.accept(5); // 输出25

8. 总结

Lambda 表达式是 Java 8 的核心特性,极大简化了函数式编程和集合处理。通过结合Stream API和函数式接口,开发者可以编写更简洁、易读的代码,同时提升性能和可维护性。建议在需要回调、事件处理或数据流操作时优先使用Lambda。

http://www.dtcms.com/wzjs/533313.html

相关文章:

  • 2 如何写一份详细的网站开发方案给客户做网站
  • 海口网站建设品牌大全wordpress 建企业网站
  • 网站 改域名网站开发学什么语言最好
  • 西宁市建设网站价格低柳州网站建设哪里有
  • 网页制作模板的淘宝网站代码做电影网站要多少钱
  • 宁波小网站制作推广图书网站建设的主要工作流程
  • python可以做网站吗wordpress 分类信息模板
  • 成都seo服务桂平百度seo
  • 制作网站用c#做前台哪里制作网站好
  • 如何做社团网站教育房地产 网站建设
  • 南京专业网站制作多少钱龙岗网站建设报价
  • 专题类的网站民制作网站哪家便宜
  • 扬州 网站 建设大型搬家门户网站源码
  • 齐齐哈尔铁峰建设局网站wordpress教程cms
  • 公司网站建设费用会计科目云开发小程序源码
  • 嘉兴企业网站推广衡水专业制作网站
  • 个人做商城网站大概多少钱360网站在系统那里
  • 淘客网站怎么做返利济宁网站建设 智雅
  • 网站制作和收费标准恶意点击推广神器
  • 做百度推广网站被攻击网站界面设计实训的意义
  • 常规网站建设内容wordpress 对象储存
  • 网站弹幕代码学校网站作用
  • 网站建设申请报告装修门户网站程序 cms
  • 阜阳市城乡建设网站专业建站提供商
  • 手机网站建设怎样网站做系统叫什么软件吗
  • 同城信息商家的网站开发广州网业有限公司
  • 做网站怎么赚钱吗网站建设栏目图片
  • 为什么检测行业不能用网站做注册网站引流
  • 公众号开发者怎么添加南宁seo排名优化
  • 网站开发求职简历做企业免费网站哪个好些