函数式接口作为方法的返回值

需求

        定义一个类(ComparatorDemo),在类中提供两个方法

        一个方法是:Comparator getComparator() 方法返回值Comparator是一个函数式接口

        一个方法是主方法,在主方法中调用getComparator方法

如果方法的返回值是一个函数式接口,我们可以使用Lambda表达式作为结果返回

        private static Comparator getComparator() {

                return(s1,s2)->s1.length()-s2.length();

}

package com.aynu23;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

//    需求
//            定义一个类(ComparatorDemo),在类中提供两个方法
//                一个方法是:Comparator getComparator() 方法返回值Comparator是一个函数式接口
//                一个方法是主方法,在主方法中调用getComparator方法

public class ComparatorDemo {
    public static void main(String[] args) {
        //在主方法中调用getComparator方法
        //构造使用场景
        //定义集合存储字符串元素
        ArrayList array = new ArrayList();
        array.add("cccc");
        array.add("aa");
        array.add("b");
        array.add("ddd");

        System.out.println("排序前:"+array);

//        Collections.sort(array);
        Collections.sort(array,getComparator());

        System.out.println("排序后:"+array);
    }

    private static  Comparator getComparator(){
        //使用匿名内部类的方式实现
//        Comparator comp=new Comparator() {
//            @Override
//            public int compare(String s1, String s2) {
//                return s1.length()-s2.length();
//            }
//        };
//        return comp;

//        return new Comparator() {
//            @Override
//            public int compare(String s1, String s2) {
//                return s1.length()-s2.length();
//            }
//        };

//        return (String s1,String s2) ->{
//            return s1.length()-s2.length();
//
//        };

        return ( s1, s2) ->
             s1.length()-s2.length();
    }
}

 

你可能感兴趣的:(java)