网站建设与制作实验报告,本地的唐山网站建设,百度公司在哪里,网址大全汽车之家Lambda表达式
简介 Lambda是一个匿名函数(方法)#xff0c; 允许把函数作为一个方法的参数 。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格#xff0c;使Java的语言表达能力得到了提升。一般都是优化匿名内部类 基础语法
无参数、无返回值的抽…Lambda表达式
简介 Lambda是一个匿名函数(方法) 允许把函数作为一个方法的参数 。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格使Java的语言表达能力得到了提升。一般都是优化匿名内部类 基础语法
无参数、无返回值的抽象方法
public class Test1 {Testpublic void test01() {
// I1 i1 new I1() {
// Override
// public void method() {
// System.out.println(传统使用匿名内部类的方式);
// }
// };
// i1.method();I1 i1 ()- System.out.println(采用Lambda表达式的方式);i1.method();}
}
interface I1{public void method();//无参数、无返回值的抽象方法
}一个参数、无返回值的抽象方法
public class Test1 {Testpublic void test01() {I1 i1 (x)- System.out.println(采用Lambda表达式的方式 x);i1.method(1000);}
}
interface I1{public void method(int num1);//一个参数、无返回值的抽象方法
}多个参数、无返回值的抽象方法
public class Test1 {Testpublic void test01() {I1 i1 (x,y,z)- System.out.println(采用Lambda表达式的方式 x y z);i1.method(1000,2000,3000);}
}
interface I1{//多个参数、无返回值的抽象方法public void method(int num1,int num2,int num3);
}多个参数、有返回值的抽象方法
public class Test1 {Testpublic void test01() {I1 i1 (x,y,z)- xyz;int result i1.method(1000,2000,3000);System.out.println(result);}
}
interface I1{//多个参数、有返回值的抽象方法public int method(int num1,int num2,int num3);
}注意点 重写方法的形参只有一个时可以不加小括号Lambda表达式当中不允许声明一个与局部变量同名的参数或者局部变量Lambda表达式中访问外层的局部变量外层的局部变量自动变成隐式常量默认添加final重写方法的形参同时加类型或同时不加类型 public class Test1 {Testpublic void test01() {int x;int num 10;I1 i1 x - System.out.println(x (num));i1.method(1000);I2 i2 (int x,int y) - {int result xy;return result;};int result i2.method(10, 20);System.out.println(result);}
}
interface I1{public void method(int num1);
}
interface I2{public int method(int num1,int num2);
}练习 调用Collections.sort()方法通过定制排序比较两个Student对象先按年龄比较年龄相同按照薪资比较使用Lambda表达式作为参数传递 public class Test1 {Testpublic void test01() {ListStudent stuList Arrays.asList(new Student(张三, 28, 4800,Course.JAVA),new Student(李四, 36, 7200,Course.JAVA),new Student(王五, 19, 9600,Course.HTML),new Student(赵六, 42, 6100,Course.HTML),new Student(孙七, 23, 9600,Course.PYTHON),new Student(吴八, 31, 3000,Course.PYTHON));Collections.sort(stuList, (a,b)- {if(a.getAge() b.getAge()){return Double.compare(a.getSalary(),b.getSalary());}return a.getAge()-b.getAge();});for (Student stu : stuList) {System.out.println(stu);}}
}
enum Course{//课程枚举JAVA,HTML,PYTHON;
}
class Student{//学生类private String name;private int age;private double salary;private Course course;...
}创建I1接口创建抽象方法public String getValue(String str),在测试类中编写方法使用接口作为参数将一个字符串转为大写并作为方法的返回值 public class Test1 {Testpublic void test01() {String strHandler strHandler(abc, x- x.toUpperCase());System.out.println(strHandler);}public static String strHandler(String str,I1 i1){return i1.getValue(str);}
}
interface I1{public String getValue(String str);
}创建I1T,R接口泛型T为参数R为返回值创建抽象方法public R add(T t1,T t2),在测试类中编写方法使用接口作为参数计算两个long类型的和 public class Test1 {Testpublic void test01() {Long addLong addLong(100L, 200L, (x,y)- xy);System.out.println(addLong);}public static Long addLong(Long l1,Long l2,I1Long,Long i1){return i1.add(l1, l2);}
}
interface I1T,R{public R add(T t1,T t2);
}