java lambda表达式

java 8(又称为jdk1.8)之前,如果想将行为传入函数,仅有的选择是匿名类。java 8后,lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码。这样有时可读性更好,表达更清晰。
lambda表达式的本质只是一个“语法糖”,由编译器推断并帮你转换包装为常规的代码,因此可以用更少的代码来实现同样的功能。

可变参数

//可变参数,调用时传递任意个参数
public static int addNums(int... ints) {
    int sum = 0;
    for (int i : ints) {
        sum += i;
    }
    return 0;
}

//只能有一个可变参数,而且要放最后
public static int addNums(String str, int... ints) {
    int sum = 0;
    for (int i : ints) {
        sum += i;
    }
    return 0;
}

lambda用法

 //java 8 之前采用采用匿名内部类的形式实现线程
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("又是虐狗的一天");
    }
}).start();

//java 8 使用lambda表达式
//() -> 把()理解为一个没有名字的方法,匿名方法
new Thread(()-> System.out.println("又是虐狗的一天")).start();

Runnable target = () -> System.out.println("今天早点睡");
target.run();
//多行代码
Runnable target2 = () -> {
   System.out.println("今天早点睡不");
   System.out.println("不");
};
target2.run();

实现接口方法

interface Demoi {
    int test(int a, int b);
}
Demoi demoi = (a, b) -> {
	return a + b;
};
demoi.test(1, 2);

循环集合

//使用lambda表达式
List<String> names = Arrays.asList("张三","李四","王五");
names.forEach(name -> System.out.println(name));
//使用::
names.forEach(System.out :: println);

排序

//java 8 前使用匿名内部类排序
String[] strings = {"ABC","DEDF","FDFDF"};
Arrays.sort(strings, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});

//java 8 使用lambda排序
Arrays.sort(strings, (String s1, String s2) -> s1.compareTo(s2));

lambda表达式需要多练习才能弄懂。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

迷图羊

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值