IntPredicate
接口Java IntPredicate
接口是一个 int 值参数的谓词。
它可以被认为是一个运算符或者函数,它根据对参数 int 值的某些评估返回“true”或者“false”值。
IntPredicate
是一个函数式接口,其函数方法是 boolean test(int a)
。
更多: zhilu jiaocheng
复杂的 IntPredicate
如果有多个条件,可以组合多个谓词
要组合两个谓词,请使用以下函数:
- IntPredicate and(IntPredicate other) - 返回一个组合谓词,表示这个谓词和另一个的短路逻辑 AND。
- IntPredicate or(IntPredicate other) - 组合谓词表示这个谓词和另一个的短路逻辑或者。
它还提供了 IntPredicate negate()
方法,该方法返回一个表示该谓词逻辑否定的谓词。
import java.util.List; import java.util.function.IntPredicate; import java.util.stream.Collectors; import java.util.stream.IntStream; public class IntPredicateExample { public static void main(String[] args) { IntPredicate isOdd = argument -> argument % 2 == 1; IntStream stream = IntStream.range(1, 20); List<Integer> oddPrimes = stream.filter( isOdd.and(IntPredicateExample::isPrime) ) .boxed() .collect(Collectors.toList()); System.out.println(oddPrimes); } public static boolean isPrime(int i) { IntPredicate isDivisible = index -> i % index == 0; return i > 1 && IntStream.range(2, i).noneMatch(isDivisible); } }
IntPredicate - 简单示例
我们可以编写一个函数(更具体地说是一个谓词)来测试参数number是否为奇数。
import java.util.List; import java.util.function.IntPredicate; import java.util.stream.Collectors; import java.util.stream.IntStream; public class IntPredicateExample { public static void main(String[] args) { IntPredicate isOdd = argument -> argument % 2 == 1; //1. Use predicate directly System.out.println( isOdd.test(9) ); //true System.out.println( isOdd.test(10) ); //false //2. Use predicate in filters IntStream stream = IntStream.range(1, 10); List<Integer> oddNumbers = stream.filter(isOdd) .boxed() .collect(Collectors.toList()); System.out.println(oddNumbers); } }
日期:2020-09-17 00:09:40 来源:oir作者:oir