为什么使用Lambda表达式?
在一些操作里,如多线程操作中.有一些情况下我们只是想去调用某一个方法并不想创建出这个类出来,那么就可以使用lambda表达式来进行操作
public class test {
public static void main(String[] args) {
new Thread(new Runnable() {
//使用匿名类实现多线程
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"新线程创建了");
}
}).start();
//使用lambda
/*Thread(()//这里的小括号表达传递的参数
* ->表达将参数传递给指定的函数
* */
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"新线程创建了");
}).start();
}
}
使用格式
//(参数类型 参数名称)->{代码}
public class test {
public static void main(String[] args) {
Fun(new Cook() {
@Override
public void fun() {
System.out.println("吃饭");
}
});
Fun(()->{
System.out.println("吃个锤子");
});
}
public static void Fun(Cook cook){
cook.fun();
}
}
带参数写法
普通改写Comparator函数写法
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
public class test {
public static void main(String[] args) {
Person arr[]={new Person("a",18),
new Person("b",20),
new Person("c",45),
new Person("d",3)};
Arrays.sort(arr, new Comparator() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()-o2.getAge();
}
});
for(Person i:arr){
System.out.println(i);
}
}
}
使用lambda
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
public class test {
public static void main(String[] args) {
Person arr[]={new Person("a",18),
new Person("b",20),
new Person("c",45),
new Person("d",3)};
Arrays.sort(arr, (Person o1,Person o2)->{
return o1.getAge()-o2.getAge();
}) ;
for(Person i:arr){
System.out.println(i);
}
}
}
带参数返回值
定义的接口
public interface Cac {
int fun(int a,int b);
}
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
public class test {
public static void main(String[] args) {
int i=Fun(115,2,(int a,int b)->{
return a+b;
});
}
public static int Fun(int a,int b,Cac c){
int sum=c.fun(a,b);
System.out.println(sum);
return sum;
}
}