Lambda表达式使用整理总结

博客介绍了Java8中Lambda表达式的基础语法,用箭头操作符将其拆分为参数列表和Lambda体两部分。还给出常用示例,如forEach遍历、Stream用法等,同时提醒注意事项,包括局部变量隐性有final语义,不能声明同名参数或局部变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambda 表达式的基础语法 : Java8 中引入了一个新的操作符 “->”, 该操作符称为箭头操作符或 Lambda 操作符,箭头操作符将 Lambda 表达式拆分成两部分 :

左侧 : Lambda 表达式的参数列表;

右侧 : Lambda 表达式中所需执行的功能, 即 Lambda 体;

基本语法:

(parameters) -> expression

(parameters) -> { statements; }

常用示例:

1.forEach遍历List集合

String[] names = {"喵","汪","咩"};  
List<String> nameList =  Arrays.asList(names);  
  
// 旧的循环方式  
for (String name : nameList) {  
     System.out.print(name + "; ");  
}  
  
// 使用 lambda 表达式
nameList.forEach((item) -> System.out.print(item + " ")); 

2.Stream用法

(1).filter过滤

List<User> users = users.stream()
				.filter(user -> "小喵咪".equals(user.getName()))
				.collect(Collectors.toList());

(2).map处理

List nums = Arrays.asList(100, 200, 300, 400, 500);
for (Integer num : nums) {
      num = num + 12;
      System.out.println(num);
}
// 使用 lambda 表达式
List nums = Arrays.asList(100, 200, 300, 400, 500);
nums.stream().map((num) -> num = num + 12)
                      .forEach(System.out::println);

3.使用Lambda排序集合

String[] names = {"喵","汪","咩"};   
   
// 使用匿名内部类排序
Arrays.sort(names, new Comparator<String>() {  
    @Override  
    public int compare(String s1, String s2) {  
        return (s1.compareTo(s2));  
    }  
});
// 使用lambda表达式
Arrays.sort(names, (String s1, String s2) -> (s1.compareTo(s2))); 

4.返回不同类型的处理结果

//返回String
String str = userList.stream()
		.filter(user -> "喵".equals(user.getName()))
        .collect(Collectors.joining(","));

//返回Set
Set<String> names = userList.stream()  
          .filter(user -> "喵".equals(user.getName()))
          .collect(Collectors.toSet());
 
//返回TreeSet
TreeSet<String> names = userList.stream()  
          .filter(user -> "喵".equals(user.getName()))
          .collect(Collectors.toCollection(TreeSet::new));  

5.实现多线程接口

//使用Thread匿名内部类  
new Thread(new Runnable() {  
    @Override  
    public void run() {  
        System.out.println("Hello world!");  
    }  
}).start();  
  
//使用lambda表达式
new Thread(() -> System.out.println("Hello world!")).start();  
  
  
  
//使用Runnable匿名内部类  
Runnable race1 = new Runnable() {  
    @Override  
    public void run() {  
        System.out.println("Hello world!");  
    }  
};  
  
//使用lambda表达式
Runnable race2 = () -> System.out.println("Hello world!");

注意事项:

1.lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义);

2.在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春日安然

可以赏个鸡腿吃嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值