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);
    }
}
posted @ 2020-01-07 00:29  hello4world  阅读(155)  评论(0)    收藏  举报