java中的Lamda表达式

本文介绍了Lambda表达式的语法、使用场景和双冒号::的简写方式。Lambda表达式常用于函数式接口,简化代码,例如在创建线程、实现接口以及遍历集合和Map时。通过Lambda,可以更简洁地表达单方法接口的实现,同时双冒号::用于方法引用,进一步提升代码的可读性。

1、Lamda表达式

1.1、语法

Lamda常见语法:

()-> 一句代码;
()-> {一堆代码};
(int a,String b ...)-> {一堆代码};
(a,b ...)-> {一堆代码};
a -> 一句代码;
() -> 5;       // 这里的5就是方法的返回值

如上括号中有参数时,参数类型可省略。

实例:

// 实例1
new Thread(()-> System.out.println("Lamda线程").start();

// 实例2
public interface St{  public void test(int i); }   // 示例接口
St st = (int i)-> System.out.println("传进来的i:"+i);
st.test(3);

1.2、使用场景

函数式接口:只有一个方法的接口

对于函数式接口,我们可以通过lamda表达式来创建该接口的对象,可以简化代码。

示例接口:
interface St{
    public void testMethod();
}


// 使用匿名内部类实现接口
St st = new St() {
      @Override
      public void testMethod() {
            System.out.println("st-匿名内部类");
      }
 };
st.testMethod();


// lamda简化
St st = ()->{
   System.out.println("Lamda简化操作");
};
st.testMethod(); 

Lamda表达式可以简化Cllection和Map的遍历

        //准备List
        List<String> sts = new ArrayList<>();
        sts.add("a");sts.add("abc");sts.add("123");
        sts.forEach((s)-> System.out.println(s+":Lamda"));

        //准备Map
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"a");map.put(2,"b");
        map.forEach((k,v)-> {
            if(v.length()<3) System.out.println(k+":"+v+"  Lamda-2");
        });

1.3、双冒号::

lamda表达式还可以简写,如下

lamda表达式简写
i -> String.valueOf(i)String::valueOf
i->i.toString()Object::toString
()->x.toString()x::toString
()-> new ArrayList<>()ArrayList::new

“::” 的前面就是 返回数据的类型,后面是返回前执行的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值