使用lambda表达式创建Predicate接口对象实现多种功能

实例代码:

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);

    }
}

控制台打印效果:

猜你喜欢

转载自blog.csdn.net/xilin6664/article/details/89002192