Java8新特性

Java8新特性-- Lambda表达式

Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据。
一个lambda可以由用逗号分隔的参数列表、–>符号与函数体三部分表示:

//打印列表中的元素
Arrays.asList( 1, 2, 3 ).forEach( e -> System.out.println( e ) );

上述例子中e的类型是由编译器猜测的,也可以指定e的参数类型,例如:

//打印列表中的元素
Arrays.asList( 1, 2, 3 ).forEach((int) e -> System.out.println( e ) );

更复杂的表达式,达式可为一个函数体,在{}中编写,例如:

//打印列表中的元素
Arrays.asList( 1, 2, 3 ).forEach(e -> {
	//表达式可为一个函数体,在{}中编写,如赋值x并打印x
	int x = e + 1;
	System.out.println( x );
} );

日常工作中,常用lambda表达式对list排序,比如,我有一个UserVO,有姓名和年龄两个属性,我需要对查出来的user集合按年龄大小进行排序,就可以使用lambda表达式,废话不多说,直接上代码:

//TestUserVO 
public class TestUserVO implements Serializable {
    private String name ;
    private int age;
    public TestUserVO (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 "TestUserVO{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

//测试类
public class Test {
    public static void main(String [] args){
        TestUserVO b = new TestUserVO("b",1);
        TestUserVO c = new TestUserVO("b",10);
        TestUserVO d = new TestUserVO("d",3);
        TestUserVO e = new TestUserVO("e",20);
        userList.add(b);
        userList.add(c);
        userList.add(e);
        userList.add(d);
        //按年龄倒序排列(e1,e2)->e2.compare(e1),如果想按照正序排列则(e1,e2)->e1.compare(e2)
        userList.sort((e1, e2)->((Integer)e2.getAge()).compareTo(((Integer) e1.getAge())));
        userList.forEach(x->System.out.println(x.toString()));
    }
}

执行结果如下
在这里插入图片描述

感谢浏览!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值