当前位置: 代码迷 >> 综合 >> Java Lambda 表达式的使用实例 (四大函数式接口与其他函数接口的示例)
  详细解决方案

Java Lambda 表达式的使用实例 (四大函数式接口与其他函数接口的示例)

热度:107   发布时间:2023-09-30 04:18:14.0

Java 8 给我们提供了一些原生的函数式接口去使用;我们可以通过继承这些接口去定义自己的函数式接口,或者根据需求直接使用这些接口。原生的函数式接口可分为四大类。

  1. Consumer接口: 消费型接口,内置函数 void accept(T t),可传入对象参数,不返回。
  2. Supplier接口:供给型接口,内置函数 T get(), 不接受参数但返回。
  3. Function<T,R>接口:函数型接口,内置函数 R apply(T t), 接受对象参数并返回。
  4. Predicate接口: 断定型接口,内置函数 boolean test(T t), 接受对象参数并返回布尔值。

示例代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;import org.junit.jupiter.api.Test;import static java.lang.System.out;
public class LambdaTest2 {
    @Testpublic void test1() {
    Consumer<Integer> consumer =  number -> out.println("Consumer1: " + number);consumer.andThen(number -> out.println("Consumer2:" + number)).accept(10);}@Testpublic void test2() {
    Supplier<Person> supplier = () -> new Person();out.println(supplier.get());}@Testpublic void test3() {
    Function<String, Person> function = name -> new Person(name, 1, 20);out.println(function.apply("Steven"));}@Testpublic void test4() {
    List<Integer> list = Arrays.asList(1,2,3,4,5,6);out.println(filterNumber(list, number -> number > 3));}private List<Integer> filterNumber(List<Integer> list, Predicate<Integer> predicate) {
    List<Integer> listTemp = new ArrayList<Integer>();for(Integer number : list) {
    if(predicate.test(number)) {
    listTemp.add(number);}}return listTemp;}
}

输出:

Consumer1: 10
Consumer2:10
Person [name=Nobody, gender=0, age=0]
Person [name=Steven, gender=1, age=20]
[4, 5, 6]
  • 其他JDK提供的函数式接口
    Java Lambda 表达式的使用实例 (四大函数式接口与其他函数接口的示例)
    这些接口的使用与四大接口大同小异, 使用时注意传入对象参数的个数和返回值即可。
  相关解决方案