实例代码:
import java.util.function.Predicate; public class Test07 { public static void main(String[] args) { //已知有Integer[] arr = {-12345, 9999, 520, 0,-38,-7758520,941213} //a) 使用lambda表达式创建Predicate对象p1,p1能判断整数是否是自然数(大于等于0) //b) 使用lambda表达式创建Predicate对象p2,p2能判断整数的绝对值是否大于100 //c) 使用lambda表达式创建Predicate对象p3,p3能判断整数是否是偶数 // 遍历arr,仅利用已创建的Predicate对象(不使用任何逻辑运算符),完成以下需求 //i. 打印自然数的个数 //ii. 打印负整数的个数 //iii. 打印绝对值大于100的偶数的个数 //iv. 打印是负整数或偶数的数的个数 Integer[] arr = {-12345, 9999, 520, 0,-38,-7758520,941213}; Predicate<Integer> p1 = a -> a >= 0;//p1能判断整数是否是自然数(大于等于0) Predicate<Integer> p2 = a -> Math.abs( a ) >= 100;//p2能判断整数的绝对值是否大于100 Predicate<Integer> p3 = a -> a % 2 == 0;//p3能判断整数是否是偶数 int count = 0;//定义变量保存自然数的个数 for (int a : arr) { if (p1.test(a)) {//如果是自然数 count ++; } } System.out.println("自然数的个数: "+count); System.out.println("负整数的个数: "+(arr.length - count)); int number = 0;//定义变量用来保存绝对值大于100的偶数的个数 for (int a : arr) { if (p2.test(a)) {//绝对值大于100 if (p3.test(a)) {//是偶数 number ++; } } } System.out.println("绝对值大于100的偶数的个数: "+number); int number1 = 0;//定义变量用来保存负整数或偶数的数的个数 for (int a : arr) { if (!p1.test(a)) {//是负整数 number1 ++; } else if (p3.test(a)) { number1 ++; } } System.out.println("负整数或偶数的数的个数: "+number1); } }
控制台打印效果: