Java 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