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
