教程 > Java8 教程 > Java8 特性 阅读:21

Java8 功能接口

函数式接口只有一个功能可以展示。 例如,具有单个方法“compareTo”的 Comparable 接口用于比较目的。 Java 8 定义了许多函数式接口,可在 lambda 表达式中广泛使用。 以下是 java.util.Function 包中定义的功能接口列表。

序号 接口 描述
1 BiConsumer<T,U> 表示接受两个输入参数且不返回结果的操作。
2 BiFunction<T,U,R> 表示接受两个参数并产生结果的函数。
3 BinaryOperator<T> 表示对两个相同类型的操作数的操作,产生与操作数相同类型的结果。
4 BiPredicate<T,U> 表示两个参数的谓词(布尔值函数)。
5 BooleanSupplier 表示布尔值结果。
6 Consumer<T> 表示接受单个输入参数且不返回结果的操作。
7 DoubleBinaryOperator 表示对两个 Double 值操作数的操作并产生一个双值结果。
8 DoubleConsumer 表示接受单个 Double 值参数且不返回结果的操作。
9 DoubleFunction<R> 表示一个接受 Double 值参数并产生结果的函数。
10 DoublePredicate 表示一个 Double 值参数的谓词(布尔值函数)。
11 DoubleSupplier 代表 Double 结果的提供者。
12 DoubleToIntFunction 表示一个接受 Double 值参数并产生 int 值结果的函数。
13 DoubleToLongFunction 表示一个接受 Double 值参数并产生长值结果的函数。
14 DoubleUnaryOperator 表示对产生 Double 值结果的单个双值操作数的操作。
15 Function<T,R> 表示接受一个参数并产生结果的函数。
16 IntBinaryOperator 表示对两个 int 值操作数的操作并产生一个 int 值结果。
17 IntConsumer 表示接受单个 int 值参数且不返回结果的操作。
18 IntFunction<R> 表示一个接受 int 值参数并产生结果的函数。
19 IntPredicate 表示一个 int 值参数的谓词(布尔值函数)。
20 IntSupplier 代表整数值结果的提供者。
21 IntToDoubleFunction 表示一个接受 int 值参数并产生双值结果的函数。
22 IntToLongFunction 表示一个接受 int 值参数并产生长值结果的函数。
23 IntUnaryOperator 表示对产生 int 值结果的单个 int 值操作数的操作。
24 LongBinaryOperator 表示对两个 Long 值操作数的操作并产生一个长值结果。
25 LongConsumer 表示接受单个 Long 值参数且不返回结果的操作。
26 LongFunction<R> 表示一个接受 Long 值参数并产生结果的函数。
27 LongPredicate 表示一个 Long 值参数的谓词(布尔值函数)。
28 LongSupplier 代表 Long 值结果的供应商。
29 LongToDoubleFunction 表示一个接受 Long 值参数并产生双值结果的函数。
30 LongToIntFunction 表示接受 Long 值参数并产生 int 值结果的函数。
31 LongUnaryOperator 表示对产生 Long 值结果的单个长值操作数的操作。
32 ObjDoubleConsumer<T> 表示接受对象值和 Double 值参数且不返回结果的操作。
33 ObjIntConsumer<T> 表示接受对象值和 int 值参数且不返回结果的操作。
34 ObjLongConsumer<T> 表示接受对象值和 Long 值参数且不返回结果的操作。
35 Predicate<T> 表示一个参数的谓词(布尔值函数)。
36 Supplier<T> 代表结果的提供者。
37 ToDoubleBiFunction<T,U> 表示接受两个参数并产生 Double 值结果的函数。
38 ToDoubleFunction<T> 表示产生 Double 值结果的函数。
39 ToIntBiFunction<T,U> 表示一个接受两个参数并产生一个 int 值结果的函数。
40 ToIntFunction<T> 表示产生 int 值结果的函数。
41 ToLongBiFunction<T,U> 表示一个接受两个参数并产生一个 Long 值结果的函数。
42 ToLongFunction<T> 表示产生 Long 值结果的函数。
43 UnaryOperator<T> 表示对单个操作数的操作,该操作产生与其操作数相同类型的结果。

功能接口示例

Predicate<T> 接口是一个函数接口,带有一个方法 test(Object) 返回一个布尔值。 这个接口表示一个对象被测试为真或假。

下面是一个示例

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {

   public static void main(String args[]) {
      List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
        
      // Predicate<Integer> predicate = n -> true
      // n 作为参数传递给 Predicate 接口的测试方法,无论 n 具有什么值,测试方法都将始终返回 true。
        
      System.out.println("Print all numbers:");
        
      //将 n 作为参数传递
      eval(list, n->true);
        
      // Predicate<Integer> predicate1 = n -> n%2 == 0
      // n 作为参数传递给 Predicate 接口的测试方法,如果 n%2 为零,测试方法将返回 true
        
      System.out.println("Print even numbers:");
      eval(list, n-> n%2 == 0 );
        
      // Predicate<Integer> predicate2 = n -> n > 3
      // n 作为参数传递给 Predicate 接口的测试方法,如果 n 大于 3,测试方法将返回 true。
        
      System.out.println("Print numbers greater than 3:");
      eval(list, n-> n > 3 );
   }
    
   public static void eval(List<Integer> list, Predicate<Integer> predicate) {

      for(Integer n: list) {

         if(predicate.test(n)) {
            System.out.println(n + " ");
         }
      }
   }
}

上面代码运行结果如下

Java8 功能接口

查看笔记

扫码一下
查看教程更方便