lambda

前言

1)lambda是一种匿名表达式,匿名函数,可以理解为一段可以传递的代码(将代码像数据一样传递),使得代码更加简洁,灵活。
2)只有参数列表和方法体
3)JDK8以上,使用IDEA注意到项目和模块的JDK,如果是maven构建,特别注意编译的JDK版本,因为maven项目会使用pom引入的依赖
在这里插入图片描述
在这里插入图片描述

1、接口对象

package org.example.base;

/**
 * 这样创建的接口对象必须重写所有方法,所以接口中最好是只有一个接口方法
 */
public class inter {
    public static void main(String[] args) {
        Inter1 i1 = ()->{System.out.println("无参数无返回值");};
        Inter2 i2 = (int a)->{System.out.println("一个参数无返回值");};
        Inter3 i3 = (int a)->{System.out.printf("一个参数有返回值:");return a;};
        Inter4 i4 = (int a,int b)->{System.out.printf("两个参数有返回值:");return a+b;};
        i1.noArg();
        i2.oneArg(1);
        System.out.println(i3.oneArgAndReturn(1));
        System.out.println(i4.TwoArgsAndReturn(1,2));
    }
}

interface Inter1{void noArg();}
interface Inter2{void oneArg(int a);}
interface Inter3{int oneArgAndReturn(int a);}
interface Inter4{int TwoArgsAndReturn(int a,int b);}

2、精简语法

1)参数类型可以省略
2)假如只有一个参数,()括号可以省略,没有参数是不可以省略的
3)如果方法体只有一条语句,大括号可以省略
4)如果方法体中唯一的语句是return返回语句,那省略大括号的同时return也要省略

package org.example.advanced;

public class inter {
    public static void main(String[] args) {
        Inter1 i1 = ()->{System.out.println("无参数无返回值");};
        Inter2 i2 = (a)->System.out.println("一个参数无返回值");//省略大括号,省略数据类型
        Inter3 i3 = a->{System.out.printf("一个参数有返回值:");return a;};//省略括号,省略数据类型
        Inter4 i4 = (a,b)->{System.out.printf("两个参数有返回值:");return a+b;};//省略数据类型
        Inter4 inter4 = (a,b)->a-b;//省略大括号,省略return,省略数据类型
        i1.noArg();
        i2.oneArg(1);
        System.out.println(i3.oneArgAndReturn(1));
        System.out.println(i4.TwoArgsAndReturn(1,2));
        System.out.println("减法:"+inter4.TwoArgsAndReturn(2,1));
    }
}

interface Inter1{void noArg();}
interface Inter2{void oneArg(int a);}
interface Inter3{int oneArgAndReturn(int a);}
interface Inter4{int TwoArgsAndReturn(int a,int b);}

3、方法引用

静态方法:类名::静态方法名
实例方法:类名::实例方法名

public class inter {
    public static void main(String[] args) {
        Inter1 inter1 = inter::testStatic;//静态方法引用
        Inter1 inter11 = new inter()::test;//实例方法引用
    }

    public static int testStatic(int a){return a-1;};
    public int test(int a){return a-1;};
}

interface Inter1 {
    int compute(int a);
}

4、构造引用

public class inter {
    public static void main(String[] args) {
        Inter1 i1 = Exception::new;
    }


}

interface Inter1{
    Exception getException();
}

5、集合比较和遍历


public class T_Sort {
    public static void main(String[] args) {
        List<Person> list = new ArrayList();
        list.add(new Person("ly",2));
        list.add(new Person("ly2",3));
        list.add(new Person("l2",5));
        list.add(new Person("y2",1));
        list.add(new Person("l",4));
        list.sort((o1, o2) -> o1.getAge() - o2.getAge());
        System.out.println(list);
        list.forEach(System.out::println);
    }

    static class Person {
        String name;
        int age;

        public Person(){this(null,-1);}

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
}

6、FunctionalInterface

允许接口定义静态方法和默认方法(default修饰)以及Object中得public方法,只能有一个抽象方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值