函数式编程思想----lambda
注重结果,不注重过程
Lambda标准格式
(参数列表)->{一些重要代码};
- ():接口中抽象方法的参数列表
- ->:传递
- {}:重写接口的抽象方法方法体
package java16.Lambda;
public class RunnableImpleMain {
public static void main(String[] args) {
//使用匿名内部类实现多线程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"新线程");
}
}).start();
//使用lambda创建多线程
new Thread(()-> {
System.out.println(Thread.currentThread().getName()+"创建新线程");
}).start();
}
}
Lambda缩减代码
例一:
package java16.Lambda;
public class Preson {
private String name;
private int age;
public Preson() {
super();
// TODO Auto-generated constructor stub
}
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;
}
public Preson(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Preson [name=" + name + ", age=" + age + "]";
}
}
package java16.Lambda;
import java.util.Arrays;
import java.util.Comparator;
public class PersonMain {
public static void main(String[] args) {
Preson[] arr= {
new Preson("hdh",12),
new Preson("hxd",13),
new Preson("hd",14)
};
//普通方法排序
/*
Arrays.sort(arr, new Comparator<Preson>() {
@Override
public int compare(Preson o1, Preson o2) {
// TODO Auto-generated method stub
return o1.getAge()-o2.getAge();
}
});
*/
//lambda方法
Arrays.sort(arr,(Preson o1,Preson o2)->{
return o1.getAge()-o2.getAge();
});
for (Preson p : arr) {
System.out.println(p);
}
}
}
例二:
package java16.Lambda;
public interface JiSuanqi {
public abstract int method(int a,int b);
}
package java16.Lambda;
public class JiSuanQiMain {
public static void main(String[] args) {
//普通
method1(5, 2, new JiSuanqi() {
@Override
public int method(int a, int b) {
return a+b;
}
});
//Lambda
method1(5, 6, (int a,int b)->{
return a+b;
});
}
private static void method1(int a,int b,JiSuanqi j) {
int result=j.method(a,b);
System.out.println(result);
}
}
注意:
- (参数列表):括号中参数列表的数据类型,可以省略不写
- (参数列表):括号中的参数如果只有一个,括号和类型都可以省略
- {代码}:如果代码有一行,无论是否有返回值,都可以省略({},return,分号)
注意:要省略{},return,分号必须一起省略