java基础--Lambda
1.优化多线程的代码繁琐问题:
public static void main(String[] args){ //使用匿名内部类的方式实现多线程 new Thread(new Runable(){ @override public void run(){ System.out.println(Thread.currentThread.getName()+"新线程创建了"); } }).start(); //使用Lambad表达式实现多线程 new Thread(()->{ System.out.println(Thread.currentThread.getName()+"新线程创建了"); }).start(); }
结果都能正常执行
2.Lambda的标准格式

3.Lambda的无参无返回值方式实现:
package com.zhs.lambda; public class DemoLambda { public static void main(String[] args) { //调用invokefood()方法,参数是接口传递接口的匿名内部类对象 invokefood(new Cook() { @Override public void makeFood() { System.out.println("吃饭了?"); } }); //使用Lambda方式实现 //()表示重写的接口方法,->表示传递的意识,将参数传递给方法体{} invokefood(()->{ System.out.println("Lambda吃饭了"); }); } //定义一个invokefood()方法,参数传递的是接口,调用接口的方法 private static void invokefood(Cook cook){ cook.makeFood(); } }
4.Lambda的有参有返回值

创建一个Person类:
package com.zhs.lambda; public class Person { private String name; private int age; public String getName() { return name; } public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
编写测试类:
package com.zhs.lambda; import java.util.Arrays; import java.util.Comparator; public class PersonArrDemo { public static void main(String[] args) { //使用数组存储多个person对象 Person []arr={ new Person("张三", 16), new Person("王五", 23), new Person("李四", 15), }; //使用Arrays数组的sort方法进行升序排序,传递参数为arr,和Comparator接口 // Arrays.sort(arr, new Comparator<Person>() { // @Override // public int compare(Person o1, Person o2) { // //对年龄升序排序(01.getAge-o2.getAge) // return o1.getAge()-o2.getAge(); // } // }); //使用lambda方式实现 Arrays.sort(arr,(Person o1,Person o2)->{ return o1.getAge()-o2.getAge(); }); //增强for循环打印输出 for (Person person : arr) { System.out.println(person); } } }
5.有参数有返回值;计算两数之和
定义接口:
package com.zhs.lambda; public interface Calcaulate { abstract int calc(int a,int b); }
测试类:
package com.zhs.lambda; public class DemoCalcautor { public static void main(String[] args) { //使用Lambda方式; invokecalc(10,20,(int a,int b)->{ return a+b; }); } //定义一个invokeCalcutor public static void invokecalc(int a,int b,Calcaulate calcaulate){ int result = calcaulate.calc(a,b); System.out.println("结果是:"+result); } }

浙公网安备 33010602011771号