当前位置:网站首页>Lambda expression
Lambda expression
2022-07-03 12:17:00 【Early summer 0811】
One 、 introduce lambda expression
Let's create a new thread , Then implement runable Interface run Method :
public class demo1 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(" The new thread executes ...");
}
}).start();
}
}
If you use lambda The expression can be abbreviated as :
public class demo1 {
public static void main(String[] args) {
new Thread(() -> System.out.println("lambda The expression was executed ...")).start();
}
}
labmda Benefits of expressions :
1. You can simplify anonymous inner classes , Simplify the code
Two 、lambda The standard format of expressions
( parameter list ): parameter list
{}: Method body
-> : No special significance , Connect parameters and method bodies
1. No parameter no return value
public interface Swimingable {
void swiming();
}
public class Swiming {
public static void main(String[] args) {
goSwiming(() ->{
System.out.println(" I am a lambda swimming ");
});
}
public static void goSwiming(Swimingable swimingable){
swimingable.swiming();
}
}
Run the following :
I am a lambda swimming
Seeing that the parameter of the method is an interface, you can consider using lambda expression , But not all anonymous inner classes can be used ;ambda expression ,lambda Expressions are equivalent to rewriting interfaces .
1. With parameter and return value
public interface SmokeAble {
int smoke(String name);
}
public class Smoking {
public static void main(String[] args) {
goSmoking((String name) -> {
System.out.println("labmda I smoked today " + name + " The smoke of ");
return 5;
});
}
public static void goSmoking(SmokeAble s) {
int i = s.smoke(" Yellow Crane Tower ");
System.out.println(" Return value :" + i);
}
}
The operation results are as follows :
labmda Today, I smoked from the Yellow Crane Tower
Return value :5
Let's use lambda Implement sorting :
public class PersonLambda {
public static void main(String[] args) {
List<Persion> persions = new ArrayList<>();
persions.add(new Persion(" Lau Andy ", 55, 167));
persions.add(new Persion(" Jacky Cheung ", 58, 174));
persions.add(new Persion(" early summer ", 42, 180));
Collections.sort(persions, (Persion o1, Persion o2) -> {
return o1.getAge() - o2.getAge();
});
for (Persion persion:persions){
System.out.println(persion);
}
}
}
Run the following :
Persion{
name=' early summer ', age=42, height=180}
Persion{
name=' Lau Andy ', age=55, height=167}
Persion{
name=' Jacky Cheung ', age=58, height=174}
3、 ... and 、lambda The ellipsis of expressions
The rules for using ellipsis are as follows :
1. Parameter types in parentheses can be omitted ;
2. If there is only one parameter in the lower bracket , Parentheses can also be omitted ;
3. If there is only one statement in braces , You can omit braces at the same time ,return Statements and semicolons
Before omitting :
(int a)->{
return new Person();
}
Omit :
a -> new Person()
Four 、lambda Preconditions for the use of expressions
lambda Expression syntax is very brief , but lambda Expressions are not misused , There are several conditions that need special attention when using :
1. The type of parameter or local variable of method must be interface type ;
2. There is only one abstract method in the interface ;
An interface with only one abstract method is called a functional interface , Just can use lambda expression ;
JDK8 I added a new one @FunctionalInterface annotation , It can help verify functional interfaces , If there are multiple abstract methods, an error will be reported .
边栏推荐
- Wechat applet pages always report errors when sending values to the background. It turned out to be this pit!
- 145. Post order traversal of binary tree
- 4000 word super detailed pointer
- (database authorization - redis) summary of unauthorized access vulnerabilities in redis
- Use of QT OpenGL camera
- Dart: about grpc (I)
- Adult adult adult
- Basic knowledge of OpenGL (sort it out according to your own understanding)
- SystemVerilog -- OOP -- copy of object
- Flutter: self study system
猜你喜欢

Display time with message interval of more than 1 minute in wechat applet discussion area
![[learning notes] DP status and transfer](/img/5e/59c64d2fe08b89fba2d7e1e6de2761.png)
[learning notes] DP status and transfer

Qt OpenGL 纹理贴图

Visual studio 2022 downloading and configuring opencv4.5.5

Download address and installation tutorial of vs2015

OpenGL draws colored triangles

New features of ES6

为什么我的mysql容器启动不了呢

ES6新特性

【附下载】密码获取工具LaZagne安装及使用
随机推荐
Solution to the second weekly test of ACM intensive training of Hunan Institute of technology in 2022
(构造笔记)MIT reading部分学习心得
Dart: about grpc (I)
Pragma pack syntax and usage
error: expected reference but got (raw string)
repo Manifest Format
【附下载】密码获取工具LaZagne安装及使用
Prompt unread messages and quantity before opening chat group
Optimize interface performance
Wrong arrangement (lottery, email)
Introduction to concurrent programming (II)
Solutions to the failure of installing electron
Capturing and sorting out external Fiddler -- Conversation bar and filter [2]
Shutter: add gradient stroke to font
Simple factory and factory method mode
OpenGL 索引缓存对象EBO和线宽模式
4000 word super detailed pointer
OpenGL index cache object EBO and lineweight mode
OpenGL 着色器使用
Colleagues wrote a responsibility chain model, with countless bugs