JAVA单排日记-2020/2/1-函数式接口_练习

1.函数式接口作为方法参数:多线程

例如 java.lang.Runnable 接口就是一个函数式接口,假设有一个newThread 方法使用该接口作为参数,那么就可以使用Lambda进行传参。这种情况其实和Thread类的构造方法参数为 Runnable 没有本质区别。

public class DmoeThread {
    public static void main(String[] args) {
    
    //使用Lambda函数重写run()方法
        newThread(()-> System.out.println(Thread.currentThread().getName()));
        newThread(()-> System.out.println(Thread.currentThread().getName()));
        newThread(()-> System.out.println(Thread.currentThread().getName()));
    }

    public static void newThread(Runnable run){
        new Thread(run).start();
    }
}

在这里插入图片描述

2.函数式接口作为方法返回值类型:比较器

如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式。当需要通过一个方法来获取一个 java.util.Comparator 接口类型的对象作为排序器时,就可以调该方法获取。

import java.util.Arrays;
import java.util.Comparator;

public class DemoCompare {
    public static void main(String[] args) {
        String[] arr= {"aaa","b","cc","ddddd"};

        //按照getCompare01方法进行排序
        //数组使用Arrays工具,集合使用Conllections工具
        Arrays.sort(arr,getCompare01());
        System.out.println(Arrays.toString(arr));

        //按照getCompare02方法进行排序
        Arrays.sort(arr,getCompare02());
        System.out.println(Arrays.toString(arr));
    }


    public static Comparator<String> getCompare01(){
        return new Comparator<String>() {
            @Override
            public int compare(String s, String t1) {
                return t1.length()-s.length();
            }
        };
    }

    //方法的返回值类型为,函数式接口时,可以使用Lambda表达式
    public static Comparator<String> getCompare02(){
        return (String s, String t1)->s.length()-t1.length() ;
    }
}

在这里插入图片描述

发布了131 篇原创文章 · 获赞 1 · 访问量 4451

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104134083
今日推荐