Java新特性 JDK8之Lambda表达式
(用于笔者记录学习)
在JDK8之前,Java是不⽀持函数式编程的,所谓的函数编程,即可理解是将⼀个函数(也称为“⾏
为”)作为⼀个参数进⾏传递, ⾯向对象编程是对数据的抽象(各种各样的POJO类),⽽函数式编
程则是对⾏为的抽象(将⾏为作为⼀个参数进⾏传递)
- java创建线程再熟悉不过了
- jdk8之前创建线程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我只玩亚索");
}
});
- jdk8之后Lambda表达式则只需要使⽤⼀句话
new Thread(() -> System.out.println("我只玩亚索"));
- 集合容器⾥⾯的字符串排序 使⽤前
List<String> list =Arrays.asList("aaa","bbb","ccc","ddd");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
}
);
for (String string : list) {
System.out.println(string);
}
- 使⽤后
List<String> list =Arrays.asList("aaa","bbb","ccc","ddd");
Collections.sort(list, (a,b)->b.compareTo(a));
for (String string : list) {
System.out.println(string);
}
- 还有常用的循环遍历
List<String> list = Arrays.asList("aaa","bbb");
list.forEach(obj->{
//TODO
});
lambda表达式 使⽤场景(前提):⼀个接⼝中只包含⼀个⽅法,则可以使⽤Lambda表达式,这样
的接⼝称之为“函数接⼝” 语法: (params) -> expression
第⼀部分为括号内⽤逗号分隔的形式参数,参数是函数式接⼝⾥⾯⽅法的参数;第⼆部分为⼀个箭
头符号:->;第三部分为⽅法体,可以是表达式和代码块
参数列表 :
括号中参数列表的数据类型可以省略不写
括号中的参数只有⼀个,那么参数类型和()都可以省略不写
⽅法体:
如果{}中的代码只有⼀⾏,⽆论有返回值,可以省略{},return,分号,要⼀起省略,其他
则需要加上