Java基础--JDK1.8新特性-Lamda
接口:
package com.test;
@FunctionalInterface //不允许定义其他抽象方法
public interface ILamdaDemo {
//java--属性(常量)和方法(抽象方法和默认方法,静态方法)
public static final int a = 100;
//抽象方法
public Integer sum(int a,int b);
// public void sayHello(); //会报错,只会允许一个抽象方法
//匿名内部类可以调用接口的静态方法和默认方法,Lamda调用不到
//静态方法,可以定义多个
static void sayHi(){
System.out.println("我是接口的静态方法!");
};
//默认方法.可以定义多个
default void test(){
System.out.println("我是接口的默认方法!");
};
}
实现:
package com.test;
import java.util.Arrays;
import java.util.Comparator;
public class LamdaDemo {
/**
* Lamda表达式的主要作用是替代匿名内部类的繁琐写法,又三部分组成。
* 1、形参列表--行参列表允许省略形参类型,如只有一个形参,可以省略括号
* 2、箭头(->)
* 3、代码块
*/
public static void main(String[] args) {
Integer[] nums = {3,4,6,1,2,8,10};
// Arrays.sort(nums);//从小到大排序
// Arrays.sort(nums,new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return o2-o1;
// }
// });; //从大到小排序
Arrays.sort(nums,(a,b)->b-a); //a-b 从小到大排序,b-a //从大到小排序
// for (Integer integer : nums) {
// System.out.println(integer);
// }
//内部类实现方式
ILamdaDemo iLamdaDemo = new ILamdaDemo() {
@Override
public Integer sum(int a, int b) {
return a+b;
}
};
Integer x = iLamdaDemo.sum(10, 2);
//Lamda表达式 简写方式 ILamdaDemo iLamdaDemo2 = (a,b)->a+b;
ILamdaDemo iLamdaDemo2 = (a,b)->{
return a+b;
};
Integer x1 = iLamdaDemo2.sum(1, 2);
System.out.println(x1);
}
}