lambda表达式
lambda表达式的使用
/** * lambda表达式 JDK8之后推出的一个特性 * lambda可以用更简短的方式创建匿名内部类。该语法使得我们可以以"函数式编程"。 * lambda创建匿名内部类时实现的接口必须只能有一个抽象方法,否则不可以使用。 * 语法: * (参数列表)->{ * 方法体 * } */ public class LambdaDemo1 { public static void main(String[] args) { Runnable r1 = new Runnable() { public void run() { System.out.println("hello"); } }; Runnable r2 = ()->{ System.out.println("hello"); }; /* * 如果方法中只有一句代码,那么"{}"可以省略不写。 */ Runnable r3 = ()->System.out.println("hello"); } }
/** * 方法含有参数时使用lambda */ public class LambdaDemo2 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("苍老师"); list.add("传奇"); list.add("小泽老师"); System.out.println(list); // Comparator<String> c = new Comparator<String>() { // public int compare(String o1, String o2) { // return o1.length()-o2.length(); // } // }; // Collections.sort(list,c); /* * lambda中参数是不需要指定类型的,编译器会根据 * 代码分析出类型。 */ // Comparator<String> c = (o1,o2)->{ // return o1.length()-o2.length(); // }; /* * 如果方法最终使用return关键字进行返回, * 那么当可以忽略"{}"时,return关键字也要 * 一同忽略。 */ Comparator<String> c = (o1,o2)->o1.length()-o2.length(); Collections.sort(list,c); System.out.println(list); } }