📜  Java中的可选 filter() 方法及示例

📅  最后修改于: 2022-05-13 01:55:34.726000             🧑  作者: Mango

Java中的可选 filter() 方法及示例

Java中Java .util.Optional类filter()方法用于过滤这个Optional实例的值,将其与给定的Predicate匹配,然后返回过滤后的Optional实例。如果此 Optional 实例中不存在任何值,则此方法返回一个空的 Optional 实例。

句法:

public Optional 
  filter(Predicale predicate)

参数:此方法接受谓词作为 Predicate 类型的参数,以使用 this 过滤 Optional 实例。

返回值:该方法返回过滤后的 Optional 实例。如果此 Optional 实例中不存在任何值,则此方法返回一个空的 Optional 实例。

异常:如果指定的谓词为空,此方法将抛出NullPointerException

下面的程序说明了 filter() 方法:
方案一:

// Java program to demonstrate
// Optional.filter() method
  
import java.util.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a Optional
        Optional op
            = Optional.of(9456);
  
        // print value
        System.out.println("Optional: "
                           + op);
  
        // filter the value
        System.out.println("Filtered value "
                           + "for odd or even: "
                           + op
                                 .filter(num
                                         -> num % 2 == 0));
    }
}
输出:
Optional: Optional[9456]
Filtered value for odd or even: Optional[9456]

方案二:

// Java program to demonstrate
// Optional.filter() method
  
import java.util.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a Optional
        Optional op
            = Optional.empty();
  
        // print value
        System.out.println("Optional: "
                           + op);
  
        try {
  
            // filter the value
            System.out.println("Filtered value "
                               + "for odd or even: "
                               + op
                                     .filter(num
                                             -> num % 2 == 0));
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}
输出:
Optional: Optional.empty
Filtered value for odd or even: Optional.empty

参考: https://docs.oracle.com/javase/9/docs/api/ Java/util/Optional.html#filter-java.util。函数.谓词-