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

Java的Lambda表达式的使用

Lambda表达式是Java 8中引入的一个重要特性,它是一种简洁而强大的语法结构,可以用于替代传统的匿名内部类。

Lambda表达式的语法结构如下:

(parameters) -> expression

或者

(parameters) -> { statements; }

其中,parameters是一个逗号分隔的参数列表,可以为空;expression是一个表达式,或者一组语句,可以是块语句,用于执行某些操作。

Lambda表达式通常用于替代匿名内部类,例如:

button.addActionListener(event -> System.out.println("Hello, world!"));

上面的代码使用Lambda表达式来定义一个事件处理程序,当按钮被点击时,将打印“Hello, world!”。在这个例子中,Lambda表达式只有一个参数,并且只执行一条语句,因此可以使用单个参数和表达式的简化语法。

Lambda表达式可以在很多场景下使用,例如在集合中进行遍历、排序、过滤等操作,或者作为方法参数和返回值。它可以大大简化代码,提高开发效率。

1. java集合遍历方法和Lambda方法

1.1. 使用迭代器遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Iterator<String> it = list.iterator();
while (it.hasNext()) {String s = it.next();System.out.println(s);
}

1.2. 使用增强for循环遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");for (String s : list) {System.out.println(s);
}

使用Lambda表达式遍历集合

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");list.forEach(s -> System.out.println(s));

2. 排序示例

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3. 线程示例

new Thread(() -> {System.out.println("Hello, world!");
}).start();

4. 文件过滤示例

File dir = new File(".");
File[] files = dir.listFiles(file -> file.getName().endsWith(".java"));

5. 使用lambda筛选数组的示例

int[] numbers = { 1, 2, 3, 4, 5 };
int[] evenNumbers = Arrays.stream(numbers).filter(n -> n % 2 == 0).toArray();

6. 函数式接口示例

interface MyFunction {void apply(String s);
}public void doSomething(MyFunction f, String s) {f.apply(s);
}doSomething((String s) -> System.out.println(s), "Hello world!");
http://www.lryc.cn/news/15701.html

相关文章:

  • Spring MVC 源码 - HandlerMapping 组件(三)之 AbstractHandlerMethodMapping
  • 超店有数,为什么商家要使用tiktok达人进行营销推广呢?
  • 【分享】订阅万里牛集简云连接器同步企业采购审批至万里牛系统
  • C++类和对象_02----对象模型和this指针
  • 瑞芯微RK3568开发:烧录过程
  • 【数据结构】——树和二叉树的概念
  • Meta分析在生态环境领域里的应用
  • PrivateLoader PPI服务发现RisePro恶意软件窃取分发信息
  • SQL93 返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(一)
  • Git ---- 概述
  • 用 tensorflow.js 做了一个动漫分类的功能(二)
  • 小林coding
  • 操作系统真相还原_第6章:完善内核
  • SmoothNLP新词发现算法的改进实现
  • 实时渲染为什么快,能不能局域网部署点量云
  • 网络游戏该如何防护ddos/cc攻击
  • 项目管理体系1-4练习题1-10答案
  • sHMIctrl智能屏幕使用记录
  • 2.20 crm day01 配置路由router less使用 axios二次封装
  • 【LeetCode】剑指 Offer 10- I. 斐波那契数列 p74 -- Java Version
  • 论文笔记:DropMessage: Unifying Random Dropping for Graph Neural Networks
  • 木鱼cms系统审计小结
  • 软件测试面试-一线大厂必问的测试思维面试题
  • 企业级分布式应用服务 EDAS
  • 弄懂 Websocket 你得知道的这 3 点
  • Appium构架及工作原理
  • 软件架构中“弹性”的多种含义
  • JAVA练习57- 罗马数字转整数、位1的个数
  • C#把图片放到picturebox上的指定位置,PointToClient与PointToScreen解读
  • 【论文笔记】Manhattan-SDF==ZJU==CVPR‘2022 Oral