Java8——Lambda表达式入门

之前一直有听说过Lambda表达式,但是一直也没有使用过,最近学习了一下,感觉还不错,简单方便,把原来需要很多行才能实现的功能可以直接一行实现。不过最好也不要盲目的使用,并不是所有情况都适合用它!

引用一段大佬的话——超过3行的逻辑就不适用Lambda表达式了。虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘。

接下来举几个基本的例子:

// 1. 不需要参数,返回值为 3

() -> 3

// 2. 接收一个数字类型的参数,返回它乘以2的值

x -> 2 * x

// 3. 接受2个数字类型参数,并返回他们的差值

(x, y) -> x – y

// 4. 接收2个int型整数,返回他们的积

(int x, int y) -> x * y

// 5. 接受一个 String 类型的对象,在控制台打印,不返回任何值

(String a) -> System.out.print(a)

然后再举几个用Lambda表达式遍历List集合的例子,多行操作需要在{}中进行,这也是最常用的,如:

package com.sixmac.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class LambdaTest {
    public static void main(String[] args) {
        List<String> list = listAdd();

        for (String s:list) {   //遍历集合的一般写法
            System.out.println(s);
        }
    //----------------------------这些方法遍历出来的值都相同---------------------------------------------------------
        //这里的l只是一个参数
     list.forEach(l -> System.out.println(l));//遍历集合的Lambda表达式写法
        list.forEach(System.out::println);//等同于上面的写法
        
        //如果要在Lambda表达式中进行多行代码的操作,需要在{}中进行,例如:
        list.forEach(l->{
            if(l.equals("XF1")){
                System.out.println(l);
            }
        });
    }

    /**
     * 创建一个list集合
     * @return
     */
    public static List<String> listAdd(){
        List<String> list = new ArrayList<>();
        for(int i=0;i<5;i++){
            list.add("XF"+i);
        }
        return list;
    }
}

如果要对Map集合进行遍历和操作,跟List其实大同小异,如:

package com.sixmac.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class LambdaTest {
    public static void main(String[] args) {
        Map<Integer, Integer> map = mapAdd();
        //一般遍历map集合的写法
        for (Map.Entry<Integer,Integer> entry:map.entrySet()) {
            System.out.println("k:"+entry.getKey()+","+"v:"+entry.getValue());
        }
        //或者
        for (Integer k: map.keySet()) {
            System.out.println("k:"+k);
        }
        for (Integer v :map.values()) {
            System.out.println("v:"+v);
        }
        //========================两种遍历的打印结果是相同的======================================
        //用Lambda表达式遍历map集合的写法
        
        //k和v是传进去的两个参数
        map.forEach((k,v)-> System.out.println("k:"+k+","+"v"+v));
        //如果想在遍历map的时候进行一些操作,需要在{}中进行,如:
        map.forEach((k,v) -> {
            v=v+2;
            map.put(k,v);
            System.out.println("k:"+k+","+"v:"+v);
        });
    }
    

    /**
     * 创建一个map集合
     * @return
     */
    public static Map<Integer,Integer> mapAdd(){
        Map<Integer, Integer> map = new HashMap<>();
        for(int i=0;i<5;i++){
            map.put(i,i);
        }
        return map;
    }
    
}

这些就是Lambda表达式的基本用法了,的确很炫酷,逼格高,不懂的人看到肯定感觉是不明觉厉,当然还有一些其他的功能,大家感兴趣的话可以自己多研究研究~

 

The end!!!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值