lambda表达式与函数式接口是结合使用的。

函数式接口:接口中只有一个抽象方法的接口,其中可以包括default修饰,static 修饰的实例方法。函数式接口可以在接口上添加@FuncationInterface注解(也可以不加),实现方式可以与普通接口一样,通过定义一个实现类实现该接口,也可以通过匿名类形式实现,新增的实现方式通过lambda表达式。

lambda表达式可以理解为:对函数式接口和其中抽象方法的实现。当需要一个函数式接口参数的方法时,我们就可以给其传递一个对应的lambda表表达式作为参数,执行时会自动执行函数式接口中的唯一方法,也就是传递过去的lambda表达式。

函数式接口例如:Comparator接口

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

public class Java8Test1 {

    public static void main(String[] args) {
        
        /**
         * 传统实现方式
         */
        String [] str = {"a","v","n","r"};
        List<String> asList = Arrays.asList(str);
        System.out.println("初始状态:"+asList);
        asList.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                // TODO Auto-generated method stub
                return o1.compareTo(o2);
            }
        });
        System.out.println("传统方式:"+asList);
        /**
         * 采用lambda表达式方式 方式一
         */
        String [] str1 = {"a","v","n","r"};
        List<String> list = Arrays.asList(str);
        //lambda表达式对compartor函数数式接口实现
        Comparator<String> comparator = (String o1,String o2)->(o1.compareTo(o2));
        list.sort(comparator);
        System.out.println("lambda表达式返回值:"+list);
        /**
         * 采用lambda表达式  方式二
         */
        String [] str2 = {"a","v","n","r"};
        List<String> list1 = Arrays.asList(str);
        //将lambda表达式作为参数传递
        list1.sort((String o1,String o2)->(o1.compareTo(o2)));
        System.out.println("lambda表达式直接作为参数:"+list1);
        
    }
}
View Code

相关文章:

  • 2022-01-18
  • 2021-12-07
  • 2021-12-20
  • 2022-03-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-10
  • 2021-12-10
  • 2021-07-15
  • 2021-10-17
  • 2022-12-23
  • 2022-02-05
相关资源
相似解决方案