欢迎访问宙启技术站
智能推送

Java函数式接口及Lambda表达式应用

发布时间:2023-06-11 04:23:43

Java函数式接口和Lambda表达式是Java 8引入的两个新特性,它们可以使用更简洁、更易读的方式编写代码。本文将介绍Java函数式接口和Lambda表达式的概念,并提供使用例子。

函数式接口是什么?

函数式接口是指只有一个抽象方法的接口。Java 8的java.util.function包中提供了很多种函数式接口,例如:Predicate,Function和Consumer等。

Lambda表达式是什么?

Lambda表达式是一种匿名函数,也称为闭包,在Java中类似于匿名类。它可以作为一个参数传递给方法或存储在变量中。Lambda表达式的语法如下:

(parameter1, parameter2...) -> {body}

其中,parameter1、parameter2等是参数列表,body是函数体。

Lambda表达式的应用

1. forEach()方法

Java 8为集合类提供了一个forEach()方法,可以使用Lambda表达式对集合进行循环遍历。

例如,下面的代码可以使用Lambda表达式循环遍历数组中的每个元素,并将它们打印出来:

String[] names = {"Tom", "Jerry", "Micky"};

Arrays.asList(names).forEach(name -> System.out.println(name));

输出结果为:

Tom

Jerry

Micky

2. Comparator接口

Comparator接口用于定制排序,Java 8中也提供了Comparator接口的Lambda表达式形式,如下:

Comparator<String> comparator = (String s1, String s2) -> s1.compareTo(s2);

可以将上述代码和Collections类的sort()方法一起使用,对字符串数组进行排序:

String[] names = {"Tom", "Jerry", "Micky"};

Arrays.sort(names, (s1, s2) -> s1.compareTo(s2));

3. Runnable接口

Runnable接口是在Java中常用的函数式接口之一,它只有一个无参的抽象方法run(),用于定义线程。在Java 8中,可以使用Lambda表达式形式实现Runnable接口,如下:

Runnable runnable = () -> {

    System.out.println("Hello, world!");

};

下面的代码将使用上述所示的Lambda表达式创建并启动一个新线程:

Thread thread = new Thread(runnable);

thread.start();

输出结果为:

Hello, world!

4. Function接口

Function接口用于将一个类型转换为另一个类型,Java 8中也提供了Function接口的Lambda表达式形式。

例如,下面的代码定义了一个Function接口,将一个字符串转换为一个整数:

Function<String, Integer> converter = (input) -> Integer.parseInt(input);

下面的代码演示了如何使用上述Function接口将一个字符串转换为一个整数:

int result = converter.apply("123");

System.out.println(result);

输出结果为:

123

总结:

Java函数式接口和Lambda表达式是Java 8的重要功能之一,它们使Java的代码更加简洁、易读,同时使得代码可重用性更高。在日常开发中,掌握Java函数式接口和Lambda表达式的使用方法,有利于提高效率,减少代码量。